Skip to content

Commit 6465aea

Browse files
committed
Handle None in OTEL_PROPAGATORS
1 parent e5a9307 commit 6465aea

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

opentelemetry-api/src/opentelemetry/propagate/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,12 @@ def inject(
132132

133133
for propagator in environ_propagators.split(","):
134134
propagator = propagator.strip()
135-
135+
if propagator.lower() == "none":
136+
logger.debug(
137+
"OTEL_PROPAGATORS environment variable contains none, removing all propagators"
138+
)
139+
propagators = []
140+
break
136141
try:
137142
propagators.append( # type: ignore
138143
next( # type: ignore

opentelemetry-api/tests/propagators/test_propagators.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,50 @@ def test_propagators(propagators):
4949

5050
reload(opentelemetry.propagate)
5151

52+
@patch.dict(environ, {OTEL_PROPAGATORS: "None"})
53+
@patch("opentelemetry.propagators.composite.CompositePropagator")
54+
def test_none_propogators(self, mock_compositehttppropagator):
55+
def test_propagators(propagators):
56+
propagators = {propagator.__class__ for propagator in propagators}
57+
58+
self.assertEqual(len(propagators), 0)
59+
self.assertEqual(
60+
propagators,
61+
set(),
62+
)
63+
64+
mock_compositehttppropagator.configure_mock(
65+
**{"side_effect": test_propagators}
66+
)
67+
68+
# pylint: disable=import-outside-toplevel
69+
import opentelemetry.propagate
70+
71+
reload(opentelemetry.propagate)
72+
73+
@patch.dict(environ, {OTEL_PROPAGATORS: "tracecontext, None"})
74+
@patch("opentelemetry.propagators.composite.CompositePropagator")
75+
def test_multiple_propogators_with_none(
76+
self, mock_compositehttppropagator
77+
):
78+
def test_propagators(propagators):
79+
propagators = {propagator.__class__ for propagator in propagators}
80+
81+
self.assertEqual(len(propagators), 0)
82+
self.assertEqual(
83+
propagators,
84+
set(),
85+
)
86+
87+
mock_compositehttppropagator.configure_mock(
88+
**{"side_effect": test_propagators}
89+
)
90+
91+
# pylint: disable=import-outside-toplevel
92+
import opentelemetry.propagate
93+
94+
reload(opentelemetry.propagate)
95+
5296
@patch.dict(environ, {OTEL_PROPAGATORS: "a, b, c "})
5397
@patch("opentelemetry.propagators.composite.CompositePropagator")
5498
@patch("opentelemetry.util._importlib_metadata.entry_points")

0 commit comments

Comments
 (0)