OPEN SOURCE ENGINEERING
OpenTelemetry Java.
Merged fixes for Jaeger and B3 trace-context propagation edge cases.
Jaeger hexadecimal flag parsing · PR #8975 (merged)
The Jaeger propagator parsed the flags field as decimal, so valid hexadecimal values such as b were rejected or misread. That could drop the sampled state while extracting a remote trace context.
- Fix: parse flags as hexadecimal, matching the Jaeger propagation format.
- Regression test: use the Jaeger client’s encoder to produce the header.
- Why it matters: valid Jaeger contexts keep their sampling decision across service boundaries.
B3 debug header propagation · PR #8930 (merged)
The B3 multi-header propagator injected X-B3-Flags but did not list it among the fields returned by fields(). Carrier cleanup therefore left a stale debug flag behind when a carrier was reused.
- Fix: include X-B3-Flags in the advertised propagation fields.
- Regression test: reuse a carrier and verify the old debug flag is cleared.
- Why it matters: a reused carrier cannot carry a previous request’s debug flag into the next sampling decision.
Malformed Jaeger header handling · PR #8912 (merged)
Malformed URL escapes in a Jaeger header could throw during context extraction instead of being treated as invalid input.
- Fix: handle malformed escapes without throwing and preserve the input context.
- Regression test: cover the malformed header case directly.
- Why it matters: a bad upstream header no longer turns trace extraction into an exception, so instrumentation can continue with the context it already has.
JavaOpenTelemetryDistributed tracingOpen source