@@ -77,17 +77,25 @@ def __init__(self, wrapped, recorder, tracer, max_nframes, capture_sampler):
77
77
code = frame .f_code
78
78
self ._self_name = "%s:%d" % (os .path .basename (code .co_filename ), frame .f_lineno )
79
79
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 ."""
83
83
if self ._self_tracer is None :
84
- return (None , None )
84
+ return (None , None , None , None )
85
85
86
86
ctxt = self ._self_tracer .current_trace_context ()
87
87
if ctxt is None :
88
- return (None , None )
88
+ return (None , None , None , None )
89
89
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 )
91
99
92
100
def acquire (self , * args , ** kwargs ):
93
101
if not self ._self_capture_sampler .capture ():
@@ -101,7 +109,7 @@ def acquire(self, *args, **kwargs):
101
109
end = self ._self_acquired_at = compat .monotonic_ns ()
102
110
thread_id , thread_name = _current_thread ()
103
111
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 ()
105
113
self ._self_recorder .push_event (
106
114
LockAcquireEvent (
107
115
lock_name = self ._self_name ,
@@ -111,6 +119,8 @@ def acquire(self, *args, **kwargs):
111
119
thread_name = thread_name ,
112
120
trace_id = trace_id ,
113
121
span_id = span_id ,
122
+ trace_resource = trace_resource ,
123
+ trace_type = trace_type ,
114
124
wait_time_ns = end - start ,
115
125
sampling_pct = self ._self_capture_sampler .capture_pct ,
116
126
)
@@ -128,7 +138,7 @@ def release(self, *args, **kwargs):
128
138
end = compat .monotonic_ns ()
129
139
frames , nframes = _traceback .pyframe_to_frames (sys ._getframe (1 ), self ._self_max_nframes )
130
140
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 ()
132
142
self ._self_recorder .push_event (
133
143
LockReleaseEvent (
134
144
lock_name = self ._self_name ,
@@ -138,6 +148,8 @@ def release(self, *args, **kwargs):
138
148
thread_name = thread_name ,
139
149
trace_id = trace_id ,
140
150
span_id = span_id ,
151
+ trace_resource = trace_resource ,
152
+ trace_type = trace_type ,
141
153
locked_for_ns = end - self ._self_acquired_at ,
142
154
sampling_pct = self ._self_capture_sampler .capture_pct ,
143
155
)
0 commit comments