Skip to content

fix(jaeger): accept URL-encoded uber-trace-id header on extract - #5793

Merged
herin049 merged 4 commits into
open-telemetry:mainfrom
LemonCondor:fix/jaeger-encoded-trace-id
Oct 26, 2026
Merged

herin049 merged 4 commits into
open-telemetry:mainfrom
LemonCondor:fix/jaeger-encoded-trace-id

Conversation

@LemonCondor

@LemonCondor LemonCondor commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Description

In OpenTelemetry, a uber-trace-id header whose separators are URL-encoded (%3A) was rejected, unlike the behaviour already supported by the Java and .NET implementations. I fixed the decoding to keep them compatible and added a regression test.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist:

  • I am a human and not a bot
  • I have run tox -e precommit
  • I have run tox -e typecheck
  • I have run the relevant tests and linting tox environments

@LemonCondor
LemonCondor requested a review from a team as a code owner October 18, 2026 18:00
@linux-foundation-easycla

linux-foundation-easycla Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

CLA Signed
The committers listed above are authorized under a signed CLA.

@opentelemetry-pr-dashboard

opentelemetry-pr-dashboard Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Pull request dashboard status

Merged · refreshed 2026-10-26 20:41 UTC

Status above doesn't look right?
  • Anything look wrong? Report it with what you expected; it helps us improve the dashboard.

@opentelemetry-pr-dashboard

This comment has been minimized.

Some Jaeger clients URL-encode the uber-trace-id value, turning the ':'
delimiter into '%3A'. The Java and .NET Jaeger propagators decode such
values, but the Python propagator rejected them and dropped the trace
context. Decode the header when no plain delimiter is present.
@LemonCondor
LemonCondor force-pushed the fix/jaeger-encoded-trace-id branch from 5c23ca7 to 7596bfd Compare October 25, 2026 18:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The narrowly scoped fix preserves plain-header parsing, includes a focused regression test, and has no identified blocking issues.

No open issues 🎉

What changed in this PR

This PR fixes Jaeger context extraction for URL-encoded uber-trace-id headers, improving compatibility with other OpenTelemetry implementations while preserving plain-header parsing.

Changes:

  • Decode URL-encoded headers when no literal colon delimiter is present.
  • Add a regression test verifying extraction of trace and span IDs.
  • Document the fix in the changelog.
File Description
propagator/​opentelemetry-propagator-jaeger/​tests/​test_jaeger_propagator.py Adds coverage for URL-encoded header separators.
propagator/​opentelemetry-propagator-jaeger/​src/​opentelemetry/​propagators/​jaeger/​__init__.py Decodes encoded headers before parsing their fields.
.changelog/​5793.fixed Records the Jaeger extraction fix.

Review effort: Balanced

@herin049
herin049 enabled auto-merge October 26, 2026 20:28
@herin049
herin049 added this pull request to the merge queue Oct 26, 2026
Merged via the queue into open-telemetry:main with commit bff56d7 Oct 26, 2026
580 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants