-
Notifications
You must be signed in to change notification settings - Fork 758
Description
Here is the pull request: #4794
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 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?
Yes: Here is the pull request: #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.