@@ -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