All projects

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.
View PR #8975

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.
View PR #8930

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.
View PR #8912
JavaOpenTelemetryDistributed tracingOpen source