Jaeger Middleware: Missing Span Context in Proxied Request Header #110
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
I tried to create a simple Echo reverse proxy (echo/v4/middleware) which connects to 2 simple Echo services (Hello World), both with the Jaeger middleware connecting to the jaeger/all-in-one docker image. I noticed that each of the services was creating their own trace in Jaeger rather than the proxy propagating through to the hello world instance. The correct headers were not being set for the context to be propagated.
Before:
With the default settings, the
config.Tracer.Extract
function at the start of the Jaeger middleware is looking for the trace context in the header value "uber-trace-id" (jaeger.TraceContextHeaderName
). This fix adds the context value in the header by using theconfig.Tracer.Inject
function.After:
See also: serializing-to-the-wire
TLDR
Fix Jaeger middleware when used with a proxy by adding the trace context to the request header.