45
45
46
46
47
47
class OpenTelemetry :
48
- current_context : dict [str , str ] = {}
48
+ context_carrier : dict [str , str ] = {}
49
49
50
50
def __init__ (
51
51
self ,
@@ -80,8 +80,7 @@ def span(
80
80
81
81
span_name = endpoint_id or method
82
82
with self .tracer .start_as_current_span (span_name ) as otel_span :
83
- self .current_context = {}
84
- TraceContextTextMapPropagator ().inject (self .current_context )
83
+ TraceContextTextMapPropagator ().inject (self .context_carrier )
85
84
otel_span .set_attribute ("http.request.method" , method )
86
85
otel_span .set_attribute ("db.system" , "elasticsearch" )
87
86
if endpoint_id is not None :
@@ -98,12 +97,13 @@ def span(
98
97
@contextlib .contextmanager
99
98
def recover_parent_context (self ) -> Generator [None , None , None ]:
100
99
token = None
101
- if self .current_context :
100
+ if self .context_carrier :
102
101
otel_parent_ctx = TraceContextTextMapPropagator ().extract (
103
- carrier = self .current_context
102
+ carrier = self .context_carrier
104
103
)
105
104
token = otel_context .attach (otel_parent_ctx )
106
- yield
107
-
108
- if token :
109
- otel_context .detach (token )
105
+ try :
106
+ yield
107
+ finally :
108
+ if token :
109
+ otel_context .detach (token )
0 commit comments