-
Notifications
You must be signed in to change notification settings - Fork 807
Description
Describe your environment
OS: ALL (Ubuntu, OS X, etc.)
Python version: ALL Python 3x - Python 3.9 and later.
Package version: 1.37.0
What happened?
opentelemetry-propagator-b3 doesn't allow the receiver to make sampling decision when X-B3-Sampled header is absent.
The Zipkin/B3 protocol - https://github.com/openzipkin/b3-propagation - leaves the sampling decision up to the receiver whenever it doesn't receive the "X-B3-Sampled" HTTP header:
An accept sampling decision is encoded as X-B3-Sampled: 1 and a deny as X-B3-Sampled: 0. Absent means defer the decision to the receiver of this header.
However, opentelemetry-propagator-b3 incorrectly hard-codes an absent "X-B3-Sampled" as if "X-B3-Sampled: 0", not giving the application an opportunity to make this decision. The class B3MultiFormat does not provide the means for an application to specify it's preference for the default behavior when "X-B3-Sampled" is not received
Steps to Reproduce
Instantiate B3MultiFormat and observe that the class does't offer any parameters or alternate mechanism to specify the default behavior in the event that explicit sampling state (e.g. "X-B3-Sampled") is absent from carrier.
Expected Result
A mechanism in B3MultiFormat to allow the application to decide the desired sampled state in the event that "X-B3-Sampled" is not received.
Actual Result
B3MultiFormat always drops the received "X-B3-TraceId" and "X-B3-SpanId" whenever "X-B3-Sampled" is not received.
This contradicts the Zipkin/B3 protocol specification which explicitly leaves the sampling decision up to the receiver whenever it doesn't receive the "X-B3-Sampled" HTTP header:
An accept sampling decision is encoded as X-B3-Sampled: 1 and a deny as X-B3-Sampled: 0. Absent means defer the decision to the receiver of this header.
Additional context
Would you like to implement a fix?
The pull request for the fix is here: open-telemetry/opentelemetry-python#4794
Tip
React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.