Repository navigation
Include B3 debug header in multi-header propagation fields - #8930
Conversation
Pull request dashboard statusMerged Β· refreshed 2026-10-22 13:42 UTC Status above doesn't look right?
|
Codecov Reportβ
All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8930 +/- ##
=========================================
Coverage 90.65% 90.65%
Complexity 10887 10887
=========================================
Files 1015 1015
Lines 29731 29732 +1
Branches 3876 3876
=========================================
+ Hits 26953 26954 +1
Misses 1860 1860
Partials 918 918 β View full report in Codecov by Harness. π New features to boost your workflow:
|
This comment has been minimized.
This comment has been minimized.
|
/dashboard route:reviewers I investigated the failed GraalVM 25 check. Native compilation fails inside JUnit with βmismatch with existing registration.β As noted in the PR description, both the propagator checks and native tests passed locally with the same GraalVM version, and I couldnβt reproduce the CI failure. |
|
@kamikazeayoup, this pull request was routed to reviewers. The handoff remains active across pushes until newer actionable human feedback arrives. Top-level feedback through this request will not return; unresolved review threads remain open. |
|
Thank you for your contribution @kamikazeayoup! π We would like to hear from you about your experience contributing to OpenTelemetry by taking a few minutes to fill out this survey. |
Problem
The B3 multi-header propagator injects
X-B3-Flagsfor debug requests but omits it from fields().The propagator documentation instructs callers to clear these fields before reusing a carrier. Because the debug header is missing from the list, it survives cleanup and can cause a subsequent unsampled request to be treated as sampled.
Changes
Add
B3Propagator.DEBUG_HEADERtoFIELDSso callers can clear it before reusing a carrier.Update
fieldsList_multiInjectto include the debug header and addinject_ReusedCarrier_DoesNotRetainDebugFlagto verify that a reused carrier does not retain the previous requestβs debug flag.Validation
./gradlew :extensions:trace-propagators:checkpassed locally../gradlew nativeTest --no-configuration-cache --no-parallelpassed locally with Oracle GraalVM25.0.4+7.1, the same version used by CI.The GraalVM 25 compilation error reported in CI did not reproduce in this local run.