From c927f1a4bd529d023f5791f38cf51c2a7d9175eb Mon Sep 17 00:00:00 2001 From: JDeuce Date: Fri, 14 Apr 2023 09:20:21 -0500 Subject: [PATCH] ddtrace/tracer: [bugfix] Atomically load error count when creating child spans Otherwise, it's subject to a data race while concurrently creating child spans and erroring. The count is written via atomic increments. --- ddtrace/tracer/spancontext.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddtrace/tracer/spancontext.go b/ddtrace/tracer/spancontext.go index ef702985f2..86d4e2083d 100644 --- a/ddtrace/tracer/spancontext.go +++ b/ddtrace/tracer/spancontext.go @@ -113,7 +113,7 @@ func newSpanContext(span *span, parent *spanContext) *spanContext { context.traceID.SetUpper(parent.traceID.Upper()) context.trace = parent.trace context.origin = parent.origin - context.errors = parent.errors + context.errors = atomic.LoadInt32(&parent.errors) parent.ForeachBaggageItem(func(k, v string) bool { context.setBaggageItem(k, v) return true