Skip to content

Commit

Permalink
simple concurrency fix for 0.8.x series
Browse files Browse the repository at this point in the history
  • Loading branch information
ktoso committed Mar 5, 2024
1 parent 4afda7e commit ed519cd
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions Sources/OpenTelemetry/Tracer.swift
Expand Up @@ -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<OTelIDGenerator>

private let sampler: OTelSampler
private let processor: OTelSpanProcessor
private let propagator: OTelPropagator
Expand All @@ -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
Expand Down Expand Up @@ -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
}

Expand Down

0 comments on commit ed519cd

Please sign in to comment.