Skip to content

Commit

Permalink
Update the internal global TextMapPropagator (open-telemetry#1261)
Browse files Browse the repository at this point in the history
* Update the internal global TextMapPropagator

Include feedback from a post-merge review of open-telemetry#1258

* Apply feedback

* Update api/global/internal/propagator.go

Co-authored-by: Steven E. Harris <seh@panix.com>

Co-authored-by: Steven E. Harris <seh@panix.com>
  • Loading branch information
2 people authored and Azfaar Qureshi committed Dec 3, 2020
1 parent 51b2e04 commit 94083fe
Showing 1 changed file with 12 additions and 16 deletions.
28 changes: 12 additions & 16 deletions api/global/internal/propagator.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,33 +54,29 @@ func (p *textMapPropagator) SetDelegate(delegate otel.TextMapPropagator) {
p.mtx.Unlock()
}

// HasDelegate returns if a delegate is set for p.
func (p *textMapPropagator) HasDelegate() bool {
// effectiveDelegate returns the current delegate of p if one is set,
// otherwise the default noop TextMapPropagator is returned. This method
// can be called concurrently.
func (p *textMapPropagator) effectiveDelegate() otel.TextMapPropagator {
p.mtx.Lock()
defer p.mtx.Unlock()
return p.delegate != nil
if p.delegate != nil {
return p.delegate
}
return p.noop
}

// Inject set cross-cutting concerns from the Context into the carrier.
func (p *textMapPropagator) Inject(ctx context.Context, carrier otel.TextMapCarrier) {
if p.HasDelegate() {
p.delegate.Inject(ctx, carrier)
}
p.noop.Inject(ctx, carrier)
p.effectiveDelegate().Inject(ctx, carrier)
}

// Extract reads cross-cutting concerns from the carrier into a Context.
func (p *textMapPropagator) Extract(ctx context.Context, carrier otel.TextMapCarrier) context.Context {
if p.HasDelegate() {
return p.delegate.Extract(ctx, carrier)
}
return p.noop.Extract(ctx, carrier)
return p.effectiveDelegate().Extract(ctx, carrier)
}

// Fields returns the keys who's values are set with Inject.
// Fields returns the keys whose values are set with Inject.
func (p *textMapPropagator) Fields() []string {
if p.HasDelegate() {
return p.delegate.Fields()
}
return p.noop.Fields()
return p.effectiveDelegate().Fields()
}

0 comments on commit 94083fe

Please sign in to comment.