Skip to content

Commit c026c0f

Browse files
authored
1542. Allow missing carrier headers to continue without raising AttributeError (#1545)
1 parent ad894b1 commit c026c0f

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v0.17b0...HEAD)
88

9-
=======
109
### Added
1110
- Added `end_on_exit` argument to `start_as_current_span`
1211
([#1519](https://github.com/open-telemetry/opentelemetry-python/pull/1519)])
1312
- Add `Span.set_attributes` method to set multiple values with one call
1413
([#1520](https://github.com/open-telemetry/opentelemetry-python/pull/1520))
1514
- Make sure Resources follow semantic conventions
1615
([#1480](https://github.com/open-telemetry/opentelemetry-python/pull/1480))
16+
- Allow missing carrier headers to continue without raising AttributeError
17+
([#1545](https://github.com/open-telemetry/opentelemetry-python/pull/1545))
1718

1819
## [0.17b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v0.17b0) - 2021-01-20
1920

propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,10 @@ def extract(
4545

4646
if context is None:
4747
context = get_current()
48-
fields = _extract_first_element(
49-
getter.get(carrier, self.TRACE_ID_KEY)
50-
).split(":")
48+
header = getter.get(carrier, self.TRACE_ID_KEY)
49+
if not header:
50+
return trace.set_span_in_context(trace.INVALID_SPAN, context)
51+
fields = _extract_first_element(header).split(":")
5152

5253
context = self._extract_baggage(getter, carrier, context)
5354
if len(fields) != 4:

propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py

+7
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ def test_extract_valid_span(self):
8383
self.assertEqual(span_context.trace_id, self.trace_id)
8484
self.assertEqual(span_context.span_id, self.span_id)
8585

86+
def test_missing_carrier(self):
87+
old_carrier = {}
88+
ctx = FORMAT.extract(carrier_getter, old_carrier)
89+
span_context = trace_api.get_current_span(ctx).get_span_context()
90+
self.assertEqual(span_context.trace_id, trace_api.INVALID_TRACE_ID)
91+
self.assertEqual(span_context.span_id, trace_api.INVALID_SPAN_ID)
92+
8693
def test_trace_id(self):
8794
old_carrier = {FORMAT.TRACE_ID_KEY: self.serialized_uber_trace_id}
8895
_, new_carrier = get_context_new_carrier(old_carrier)

0 commit comments

Comments
 (0)