From ed519cd5a18154c91ab7e69758c9143c296f6dfa Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Tue, 5 Mar 2024 21:35:04 +0900 Subject: [PATCH] simple concurrency fix for 0.8.x series --- Sources/OpenTelemetry/Tracer.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Sources/OpenTelemetry/Tracer.swift b/Sources/OpenTelemetry/Tracer.swift index 5a41cc0e..b36f6b3b 100644 --- a/Sources/OpenTelemetry/Tracer.swift +++ b/Sources/OpenTelemetry/Tracer.swift @@ -18,7 +18,9 @@ import Tracing extension OTel { public final class Tracer { private let resource: OTel.Resource - private var idGenerator: OTelIDGenerator + + private var idGenerator: NIOLockedValueBox + private let sampler: OTelSampler private let processor: OTelSpanProcessor private let propagator: OTelPropagator @@ -33,7 +35,7 @@ extension OTel { logger: Logger ) { self.resource = resource - self.idGenerator = idGenerator + self.idGenerator = .init(idGenerator) self.sampler = sampler self.processor = processor self.propagator = propagator @@ -105,13 +107,13 @@ extension OTel.Tracer: Tracer { let traceID: OTel.TraceID let traceState: OTel.TraceState? - let spanID = idGenerator.generateSpanID() + let spanID = idGenerator.withLockedValue { $0.generateSpanID() } if let parentSpanContext = parentContext.spanContext { traceID = parentSpanContext.traceID traceState = parentSpanContext.traceState } else { - traceID = idGenerator.generateTraceID() + traceID = idGenerator.withLockedValue { $0.generateTraceID() } traceState = nil }