From 7ca3ec751804ae4823ad132a574a71487f82689e Mon Sep 17 00:00:00 2001 From: Diego Augusto Molina Date: Fri, 7 Jun 2024 17:52:21 -0300 Subject: [PATCH] Infra: fix data race in usagestats service (#88881) fix data race --- pkg/infra/usagestats/service/usage_stats.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/infra/usagestats/service/usage_stats.go b/pkg/infra/usagestats/service/usage_stats.go index 88b2d788919..74d004b9e58 100644 --- a/pkg/infra/usagestats/service/usage_stats.go +++ b/pkg/infra/usagestats/service/usage_stats.go @@ -10,6 +10,7 @@ import ( "runtime" "strings" "sync" + "sync/atomic" "time" "github.com/google/uuid" @@ -70,7 +71,7 @@ func (uss *UsageStats) GetUsageReport(ctx context.Context) (usagestats.Report, e func (uss *UsageStats) gatherMetrics(ctx context.Context, metrics *sync.Map) { ctxTracer, span := uss.tracer.Start(ctx, "UsageStats.GatherLoop") defer span.End() - totC, errC := 0, 0 + var totC, errC uint64 sem := make(chan struct{}, maxConcurrentCollectors) // create a semaphore with a capacity of 5 var wg sync.WaitGroup @@ -87,9 +88,9 @@ func (uss *UsageStats) gatherMetrics(ctx context.Context, metrics *sync.Map) { defer cancel() fnMetrics, err := uss.runMetricsFunc(ctxWithTimeout, fn) - totC++ + atomic.AddUint64(&totC, 1) if err != nil { - errC++ + atomic.AddUint64(&errC, 1) return }