Skip to content

Commit 426bae8

Browse files
fix[datadog-agent-cluster-worker]: Fix race condition in orchestrator manifest stats (#36076)
Co-authored-by: datadog-datadog-prod-us1[bot] <88084959+datadog-datadog-prod-us1[bot]@users.noreply.github.com>
1 parent 22081e7 commit 426bae8

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

pkg/collector/corechecks/cluster/orchestrator/manifest_buffer.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727

2828
var (
2929
bufferExpVars = expvar.NewMap("orchestrator-manifest-buffer")
30-
bufferedManifest = map[pkgorchestratormodel.NodeType]*expvar.Int{}
3130
manifestFlushed = &expvar.Int{}
3231
bufferFlushedTotal = &expvar.Int{}
3332
tlmBufferedManifest = telemetry.NewCounter("orchestrator", "manifest_buffered", []string{"orchestrator", "resource"}, "Number of manifest buffered")
@@ -175,11 +174,19 @@ func setManifestStats(manifests []interface{}) {
175174
// Number of manifests flushed per resource in total
176175
for _, m := range manifests {
177176
nodeType := pkgorchestratormodel.NodeType(m.(*model.Manifest).Type)
178-
if _, ok := bufferedManifest[nodeType]; !ok {
179-
bufferedManifest[nodeType] = &expvar.Int{}
180-
bufferExpVars.Set(nodeType.String(), bufferedManifest[nodeType])
177+
nodeTypeStr := nodeType.String()
178+
179+
// Get the existing expvar.Int for this node type, or create a new one if it doesn't exist
180+
var expvarInt *expvar.Int
181+
if v := bufferExpVars.Get(nodeTypeStr); v == nil {
182+
expvarInt = new(expvar.Int)
183+
bufferExpVars.Set(nodeTypeStr, expvarInt)
184+
} else {
185+
expvarInt = v.(*expvar.Int)
181186
}
182-
bufferedManifest[nodeType].Add(1)
187+
188+
// Increment the counter
189+
expvarInt.Add(1)
183190
tlmBufferedManifest.Inc(nodeType.TelemetryTags()...)
184191
}
185192
}

0 commit comments

Comments
 (0)