-
Notifications
You must be signed in to change notification settings - Fork 783
Description
Describe your environment
OS: MacOS Sequoia
Python version: 3.11
SDK version: 1.33.1
API version: 1.33.1
What happened?
AWS Distro of Openelemetry Python while initializing sets an opinionated list of propagators via the OTEL_PROPAGATORS environment variable to baggage,xray,tracecontext but the actual propagators configured are still the default tracecontext,baggage.
Steps to Reproduce
- Create a python virtual environment and install ADOT Python
pip install aws-opentelemetry-distro - Create a python script
main.pywith the following content:from opentelemetry import propagate # print each propagator name for p in propagate.get_global_textmap()._propagators: print(p.__class__.__name__)
- Run the script using the following command
OTEL_PYTHON_DISTRO=aws_distro \ OTEL_PYTHON_CONFIGURATOR=aws_configurator \ opentelemetry-instrument python3 main.py
- Among the logs (ignore the export failures) you will see the following propagators which are the default ones from OpenTelemetry SDK:
TraceContextTextMapPropagator W3CBaggagePropagator
Expected Result
The printed propagators should be the following:
W3CBaggagePropagator
AwsXRayPropagator
TraceContextTextMapPropagatorActual Result
TraceContextTextMapPropagator
W3CBaggagePropagatorAdditional context
My RCA is that even before a distro is loaded and initialized, the propagate module is loaded and this module level code is executed which configures the propagators to tracecontext,baggage. By the time the distro sets the OTEL_PROPAGATORS env variable it's already too late.
In ADOT Python, we had to force a reload of the propagate module so that the new propagators are picked up and initialized. aws-observability/aws-otel-python-instrumentation#421
Would you like to implement a fix?
None