Skip to content

Commit 0b48ad3

Browse files
committed
ensure token is always defined, get_current_span never returns a false value, get rid of if statement
1 parent 1c49f12 commit 0b48ad3

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

ddtrace/internal/opentelemetry/context.py

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,38 +22,28 @@ def attach(self, otel_context):
2222
"""
2323
# Inline opentelemetry imports to avoid circular imports.
2424
from opentelemetry.baggage import get_all
25-
from opentelemetry.trace import Span as OtelSpan
2625
from opentelemetry.trace import get_current_span
2726

2827
from .span import Span
2928

3029
otel_span = get_current_span(otel_context)
31-
if otel_span:
32-
if isinstance(otel_span, Span):
33-
token = self._ddcontext_provider.activate(otel_span._ddspan)
34-
ddcontext = otel_span._ddspan.context
35-
elif isinstance(otel_span, OtelSpan):
36-
trace_id, span_id, _, tf, ts, _ = otel_span.get_span_context()
37-
trace_state = ts.to_header() if ts else None
38-
ddcontext = _TraceContext._get_context(trace_id, span_id, tf, trace_state)
39-
token = self._ddcontext_provider.activate(ddcontext)
40-
else:
41-
token = None
42-
ddcontext = None
43-
log.error(
44-
"Programming ERROR: ddtrace does not support activating spans with the type: %s. Please open a "
45-
"github issue at: https://github.com/Datadog/dd-trace-py and set DD_TRACE_OTEL_ENABLED=True.",
46-
type(otel_span),
47-
)
48-
49-
# get current open telemetry baggage and store it on the datadog context object
50-
# fix: we need to support setting baggage when there is no active span
51-
otel_baggage = get_all(otel_context)
52-
if ddcontext:
53-
ddcontext.remove_all_baggage_items()
54-
if otel_baggage:
55-
for key, value in otel_baggage.items():
56-
ddcontext._baggage[key] = value # potentially convert to json
30+
if isinstance(otel_span, Span):
31+
ddcontext = otel_span._ddspan.context
32+
token = self._ddcontext_provider.activate(otel_span._ddspan)
33+
else:
34+
trace_id, span_id, _, tf, ts, _ = otel_span.get_span_context()
35+
trace_state = ts.to_header() if ts else None
36+
ddcontext = _TraceContext._get_context(trace_id, span_id, tf, trace_state)
37+
token = self._ddcontext_provider.activate(ddcontext)
38+
39+
# get current open telemetry baggage and store it on the datadog context object
40+
# fix: we need to support setting baggage when there is no active span
41+
otel_baggage = get_all(otel_context)
42+
if ddcontext:
43+
ddcontext.remove_all_baggage_items()
44+
if otel_baggage:
45+
for key, value in otel_baggage.items():
46+
ddcontext._baggage[key] = value # potentially convert to json
5747

5848
return token
5949

0 commit comments

Comments
 (0)