4040from sentry_sdk .tracing import Span as SentrySpan
4141from sentry_sdk .utils import SENSITIVE_DATA_SUBSTITUTE
4242
43- TraceState = Optional [Tuple [Optional [SentrySpan ], SentrySpan ]]
44-
4543
4644class RustTracingLevel (Enum ):
4745 Trace = "TRACE"
@@ -170,7 +168,7 @@ def _include_tracing_fields(self) -> bool:
170168 else self .include_tracing_fields
171169 )
172170
173- def on_event (self , event : str , _span_state : "TraceState " ) -> None :
171+ def on_event (self , event : str , sentry_span : "SentrySpan " ) -> None :
174172 deserialized_event = json .loads (event )
175173 metadata = deserialized_event .get ("metadata" , {})
176174
@@ -184,7 +182,7 @@ def on_event(self, event: str, _span_state: "TraceState") -> None:
184182 elif event_type == EventTypeMapping .Event :
185183 process_event (deserialized_event )
186184
187- def on_new_span (self , attrs : str , span_id : str ) -> "TraceState " :
185+ def on_new_span (self , attrs : str , span_id : str ) -> "SentrySpan " :
188186 attrs = json .loads (attrs )
189187 metadata = attrs .get ("metadata" , {})
190188
@@ -210,29 +208,26 @@ def on_new_span(self, attrs: str, span_id: str) -> "TraceState":
210208 "origin" : self .origin ,
211209 }
212210
213- parent_sentry_span = sentry_sdk .get_current_span ()
214- with sentry_sdk .start_span (** kwargs ) as sentry_span :
215- fields = metadata .get ("fields" , [])
216- for field in fields :
217- if self ._include_tracing_fields ():
218- sentry_span .set_data (field , attrs .get (field ))
219- else :
220- sentry_span .set_data (field , SENSITIVE_DATA_SUBSTITUTE )
211+ sentry_span = sentry_sdk .start_span (** kwargs )
212+ fields = metadata .get ("fields" , [])
213+ for field in fields :
214+ if self ._include_tracing_fields ():
215+ sentry_span .set_data (field , attrs .get (field ))
216+ else :
217+ sentry_span .set_data (field , SENSITIVE_DATA_SUBSTITUTE )
221218
222- return (parent_sentry_span , sentry_span )
219+ sentry_span .__enter__ ()
220+ return sentry_span
223221
224- def on_close (self , span_id : str , span_state : "TraceState " ) -> None :
225- if span_state is None :
222+ def on_close (self , span_id : str , sentry_span : "SentrySpan " ) -> None :
223+ if sentry_span is None :
226224 return
227225
228- parent_sentry_span , sentry_span = span_state
229- sentry_span .finish ()
230- sentry_sdk .get_current_scope ().span = parent_sentry_span
226+ sentry_span .__exit__ ()
231227
232- def on_record (self , span_id : str , values : str , span_state : "TraceState " ) -> None :
233- if span_state is None :
228+ def on_record (self , span_id : str , values : str , sentry_span : "SentrySpan " ) -> None :
229+ if sentry_span is None :
234230 return
235- _parent_sentry_span , sentry_span = span_state
236231
237232 deserialized_values = json .loads (values )
238233 for key , value in deserialized_values .items ():
0 commit comments