@@ -77,17 +77,25 @@ def __init__(self, wrapped, recorder, tracer, max_nframes, capture_sampler):
7777 code = frame .f_code
7878 self ._self_name = "%s:%d" % (os .path .basename (code .co_filename ), frame .f_lineno )
7979
80- def _get_trace_and_span_id (self ):
81- # type: (...) -> Tuple[Optional[int], Optional[int]]
82- """Return current trace and span ids ."""
80+ def _get_trace_and_span_info (self ):
81+ # type: (...) -> Tuple[Optional[int], Optional[int], Optional[str], Optional[str] ]
82+ """Return current trace id, span id and trace resource and type ."""
8383 if self ._self_tracer is None :
84- return (None , None )
84+ return (None , None , None , None )
8585
8686 ctxt = self ._self_tracer .current_trace_context ()
8787 if ctxt is None :
88- return (None , None )
88+ return (None , None , None , None )
8989
90- return (ctxt .trace_id , ctxt .span_id )
90+ root = self ._self_tracer .current_root_span ()
91+ if root is None :
92+ resource = None
93+ span_type = None
94+ else :
95+ resource = root .resource
96+ span_type = root .span_type
97+
98+ return (ctxt .trace_id , ctxt .span_id , resource , span_type )
9199
92100 def acquire (self , * args , ** kwargs ):
93101 if not self ._self_capture_sampler .capture ():
@@ -101,7 +109,7 @@ def acquire(self, *args, **kwargs):
101109 end = self ._self_acquired_at = compat .monotonic_ns ()
102110 thread_id , thread_name = _current_thread ()
103111 frames , nframes = _traceback .pyframe_to_frames (sys ._getframe (1 ), self ._self_max_nframes )
104- trace_id , span_id = self ._get_trace_and_span_id ()
112+ trace_id , span_id , trace_resource , trace_type = self ._get_trace_and_span_info ()
105113 self ._self_recorder .push_event (
106114 LockAcquireEvent (
107115 lock_name = self ._self_name ,
@@ -111,6 +119,8 @@ def acquire(self, *args, **kwargs):
111119 thread_name = thread_name ,
112120 trace_id = trace_id ,
113121 span_id = span_id ,
122+ trace_resource = trace_resource ,
123+ trace_type = trace_type ,
114124 wait_time_ns = end - start ,
115125 sampling_pct = self ._self_capture_sampler .capture_pct ,
116126 )
@@ -128,7 +138,7 @@ def release(self, *args, **kwargs):
128138 end = compat .monotonic_ns ()
129139 frames , nframes = _traceback .pyframe_to_frames (sys ._getframe (1 ), self ._self_max_nframes )
130140 thread_id , thread_name = _current_thread ()
131- trace_id , span_id = self ._get_trace_and_span_id ()
141+ trace_id , span_id , trace_resource , trace_type = self ._get_trace_and_span_info ()
132142 self ._self_recorder .push_event (
133143 LockReleaseEvent (
134144 lock_name = self ._self_name ,
@@ -138,6 +148,8 @@ def release(self, *args, **kwargs):
138148 thread_name = thread_name ,
139149 trace_id = trace_id ,
140150 span_id = span_id ,
151+ trace_resource = trace_resource ,
152+ trace_type = trace_type ,
141153 locked_for_ns = end - self ._self_acquired_at ,
142154 sampling_pct = self ._self_capture_sampler .capture_pct ,
143155 )
0 commit comments