fix: Correct spec-compliance of API Tracer.start_span #1905
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.
The spec states:
With new tests that match the spec, the current implementation fails with:
The new implementation correctly passes this test (and the old tests). Shopify has been running with a similar patch in production for several years, based on a belief that the spec was incorrect - instead the implementation was wrong 🤦 .
Context: IIRC the API Tracer was written assuming that it would be used only when no SDK was present, however that is not necessarily true (anyone can create a no-op API Tracer instance even if the SDK TracerProvider is installed) and the spec for
TracerConfigstates:The obvious implementation of
TracerConfigwould delegate to an API Tracer instance when a Tracer is disabled.