Skip to content

Commit 2d7a045

Browse files
authored
Merge branch 'main' into issue_2360
2 parents 4c90726 + b03b5ca commit 2d7a045

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3939
([#2705](https://github.com/open-telemetry/opentelemetry-python/pull/2705))
4040
- Add entrypoint for metrics exporter
4141
([#2748](https://github.com/open-telemetry/opentelemetry-python/pull/2748))
42+
- Fix Jaeger propagator usage with NonRecordingSpan
43+
([#2762](https://github.com/open-telemetry/opentelemetry-python/pull/2762))
4244

4345
## [1.12.0rc1-0.31b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.12.0rc1-0.31b0) - 2022-05-17
4446

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,10 @@ def inject(
8181
if span_context == trace.INVALID_SPAN_CONTEXT:
8282
return
8383

84-
span_parent_id = span.parent.span_id if span.parent else 0
84+
# Non-recording spans do not have a parent
85+
span_parent_id = (
86+
span.parent.span_id if span.is_recording() and span.parent else 0
87+
)
8588
trace_flags = span_context.trace_flags
8689
if trace_flags.sampled:
8790
trace_flags |= self.DEBUG_FLAG

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,13 @@ def test_extract_invalid_uber_trace_id_header_to_implicit_ctx(self):
230230

231231
ctx = FORMAT.extract(carrier)
232232
self.assertDictEqual(Context(), ctx)
233+
234+
def test_non_recording_span_does_not_crash(self):
235+
"""Make sure propagator does not crash when working with NonRecordingSpan"""
236+
mock_setter = Mock()
237+
span = trace_api.NonRecordingSpan(trace_api.SpanContext(1, 1, True))
238+
with trace_api.use_span(span, end_on_exit=True):
239+
try:
240+
FORMAT.inject({}, setter=mock_setter)
241+
except Exception as exc: # pylint: disable=broad-except
242+
self.fail(f"Injecting failed for NonRecordingSpan with {exc}")

0 commit comments

Comments
 (0)