File tree Expand file tree Collapse file tree
propagator/opentelemetry-propagator-jaeger
src/opentelemetry/propagators/jaeger Expand file tree Collapse file tree Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 :
Original file line number Diff line number Diff 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 )
You can’t perform that action at this time.
0 commit comments