Skip to content

Commit 2f088f8

Browse files
Fix the empty headers use case for OTTracePropagator (#378)
1 parent f8e51c4 commit 2f088f8

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

Diff for: CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python-contrib/compare/v0.18b0...HEAD)
88
- Updated instrumentations to use `opentelemetry.trace.use_span` instead of `Tracer.use_span()`
99
([#364](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/364))
10+
- `opentelemetry-propagator-ot-trace` Do not throw an exception when headers are not present
11+
([#378](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/378))
1012

1113
### Changed
1214
- Rename `IdsGenerator` to `IdGenerator`

Diff for: propagator/opentelemetry-propagator-ot-trace/src/opentelemetry/propagators/ot_trace/__init__.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
from re import compile as re_compile
16-
from typing import Iterable, Optional
16+
from typing import Any, Iterable, Optional
1717

1818
from opentelemetry.baggage import get_all, set_baggage
1919
from opentelemetry.context import Context
@@ -55,10 +55,12 @@ def extract(
5555
) -> Context:
5656

5757
traceid = _extract_first_element(
58-
getter.get(carrier, OT_TRACE_ID_HEADER)
58+
getter.get(carrier, OT_TRACE_ID_HEADER), INVALID_TRACE_ID
5959
)
6060

61-
spanid = _extract_first_element(getter.get(carrier, OT_SPAN_ID_HEADER))
61+
spanid = _extract_first_element(
62+
getter.get(carrier, OT_SPAN_ID_HEADER), INVALID_SPAN_ID
63+
)
6264

6365
sampled = _extract_first_element(
6466
getter.get(carrier, OT_SAMPLED_HEADER)
@@ -163,8 +165,8 @@ def fields(self):
163165

164166

165167
def _extract_first_element(
166-
items: Iterable[TextMapPropagatorT],
168+
items: Iterable[TextMapPropagatorT], default: Any = None,
167169
) -> Optional[TextMapPropagatorT]:
168170
if items is None:
169-
return None
171+
return default
170172
return next(iter(items), None)

Diff for: propagator/opentelemetry-propagator-ot-trace/tests/test_ot_trace_propagator.py

+9
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,12 @@ def test_extract_baggage(self):
366366

367367
self.assertEqual(baggage["abc"], "abc")
368368
self.assertEqual(baggage["def"], "def")
369+
370+
def test_extract_empty(self):
371+
"Test extraction when no headers are present"
372+
373+
span_context = get_current_span(
374+
self.ot_trace_propagator.extract(carrier_getter, {})
375+
).get_span_context()
376+
377+
self.assertEqual(span_context, INVALID_SPAN_CONTEXT)

0 commit comments

Comments
 (0)