Reload propagators for distro config + Reorder propagators #421
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.
Issue
The
OTEL_PROPAGATORS
configured in the ADOT do not actually take effect. The configured propagators are stilltracecontext
andbaggage
which are the default ones configured by OTel SDK. This causes ADOT to ignore thex-amzn-trace-id
trace header causing broken traces if there is only XRay format trace being propagated.Root Cause
opentelemetry.propagate
module has the logic to load the propagators configured via theOTEL_PROPAGATORS
env variable. If the env variable is not set, then it sets up the default propagators.OTEL_PROPAGATORS
env variable. This point is too late to modify the OTEL_PROPAGATORS env variable.Solution
Set the
OTEL_PROPAGATORS
env variable in ADOT distro and reload theopentelemetry.propagate
module (using importlib.reload) which will force it to reinitialize the intended propagators.Related Note
With this fix, the ADOT configured propagators will take effect, which currently does not include
baggage
and will break some existing functionality that depends on baggage. So I'm also also updating the propagators set by the ADOT to:baggage
baggage, xray, tracecontext
. This will be the order we follow for other ADOT SDKs too (JS already in progress).By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.