Use current span for SDK-less context propagation #510
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the absence of an SDK the API should not record spans anymore but it should propagate the span context. In our case absence of an SDK means we're using the
NoopTracer
.See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#behavior-of-the-api-in-the-absence-of-an-installed-sdk
There are different ways to create new spans and they provide different ways of specifying the parent context:
Tracer::start
: usesContext::current()
Tracer::build
: uses the context from the span builder or falls back to the current context. BUT we did not have this fallback in theNoopTracer
.Tracer::start_with_context
: uses the specified contextThis changes the
SpanBuilder
to make itsparent_context
non-optional. That way the current context fallback is done onSpanBuilder
creation. Tracer implementations just need to read theparent_context
from the span builder.