diff --git a/cmd/main.go b/cmd/main.go index c2cb3c17..9548751a 100755 --- a/cmd/main.go +++ b/cmd/main.go @@ -23,11 +23,9 @@ import ( func parallel(fns ...func()) { var wg sync.WaitGroup for _, fn := range fns { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { fn() - }() + }) } wg.Wait() } diff --git a/internal/api/handler.go b/internal/api/handler.go index d251812a..bba5433c 100644 --- a/internal/api/handler.go +++ b/internal/api/handler.go @@ -24,6 +24,7 @@ import ( func NewHandler() *gin.Engine { gin.SetMode("release") r := gin.New() + r.Use(NoCache()) r.Use(ErrorHandler()) r.Use(ErrorLoggingMiddleware()) @@ -113,6 +114,15 @@ func NewHandler() *gin.Engine { return r } +func NoCache() gin.HandlerFunc { + return func(c *gin.Context) { + c.Header("Cache-Control", "no-cache, no-store, must-revalidate") + c.Header("Pragma", "no-cache") + c.Header("Expires", "0") + c.Next() + } +} + func AuthMiddleware() gin.HandlerFunc { if !auth.IsEnabled() { return func(c *gin.Context) { diff --git a/internal/metrics/systeminfo/system_info.go b/internal/metrics/systeminfo/system_info.go index fc1b20a5..9e291b40 100644 --- a/internal/metrics/systeminfo/system_info.go +++ b/internal/metrics/systeminfo/system_info.go @@ -79,39 +79,29 @@ func getSystemInfo(ctx context.Context, lastResult *SystemInfo) (*SystemInfo, er var wg sync.WaitGroup if !common.MetricsDisableCPU { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { errs.Add(s.collectCPUInfo(ctx)) - }() + }) } if !common.MetricsDisableMemory { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { errs.Add(s.collectMemoryInfo(ctx)) - }() + }) } if !common.MetricsDisableDisk { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { errs.Add(s.collectDisksInfo(ctx, lastResult)) - }() + }) } if !common.MetricsDisableNetwork { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { errs.Add(s.collectNetworkInfo(ctx, lastResult)) - }() + }) } if !common.MetricsDisableSensors { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { errs.Add(s.collectSensorsInfo(ctx)) - }() + }) } wg.Wait() diff --git a/internal/task/task_test.go b/internal/task/task_test.go index d99fb5e8..fb9720c2 100644 --- a/internal/task/task_test.go +++ b/internal/task/task_test.go @@ -130,10 +130,9 @@ func TestFinishMultipleCalls(t *testing.T) { n := 20 wg.Add(n) for range n { - go func() { - defer wg.Done() + wg.Go(func() { task.Finish(nil) - }() + }) } wg.Wait() } diff --git a/internal/utils/functional/map.go b/internal/utils/functional/map.go index 1f4faaf0..bbc355a6 100644 --- a/internal/utils/functional/map.go +++ b/internal/utils/functional/map.go @@ -62,15 +62,13 @@ func (m Map[KT, VT]) RangeAllParallel(do func(k KT, v VT)) { } var wg sync.WaitGroup - - m.Range(func(k KT, v VT) bool { + for k, v := range m.Range { wg.Add(1) - go func() { + go func(k KT, v VT) { + defer wg.Done() do(k, v) - wg.Done() - }() - return true - }) + }(k, v) + } wg.Wait() } diff --git a/internal/utils/functional/set.go b/internal/utils/functional/set.go index fcb846ee..353a4eeb 100644 --- a/internal/utils/functional/set.go +++ b/internal/utils/functional/set.go @@ -1,8 +1,6 @@ package functional import ( - "sync" - "github.com/puzpuzpuz/xsync/v4" ) @@ -44,20 +42,6 @@ func (set Set[T]) RangeAll(f func(T)) { }) } -func (set Set[T]) RangeAllParallel(f func(T)) { - var wg sync.WaitGroup - - set.Range(func(k T) bool { - wg.Add(1) - go func() { - f(k) - wg.Done() - }() - return true - }) - wg.Wait() -} - func (set Set[T]) Size() int { return set.m.Size() } diff --git a/internal/utils/io.go b/internal/utils/io.go index 2e1702dd..5427a9f9 100644 --- a/internal/utils/io.go +++ b/internal/utils/io.go @@ -92,16 +92,15 @@ func NewBidirectionalPipe(ctx context.Context, rw1 io.ReadWriteCloser, rw2 io.Re func (p BidirectionalPipe) Start() error { var wg sync.WaitGroup - wg.Add(2) var srcErr, dstErr error - go func() { + wg.Go(func() { srcErr = p.pSrcDst.Start() wg.Done() - }() - go func() { + }) + wg.Go(func() { dstErr = p.pDstSrc.Start() wg.Done() - }() + }) wg.Wait() return errors.Join(srcErr, dstErr) } diff --git a/internal/utils/ref_count_test.go b/internal/utils/ref_count_test.go index d6e64cdd..628b8f36 100644 --- a/internal/utils/ref_count_test.go +++ b/internal/utils/ref_count_test.go @@ -12,14 +12,12 @@ func TestRefCounterAddSub(t *testing.T) { rc := NewRefCounter() // Count starts at 1 var wg sync.WaitGroup - wg.Add(2) rc.Add() for range 2 { - go func() { - defer wg.Done() + wg.Go(func() { rc.Sub() - }() + }) } wg.Wait()