11import sys
2- import time
32from concurrent import futures
43from textwrap import dedent
54from threading import Thread
@@ -146,8 +145,6 @@ def do_some_work(number):
146145 ):
147146 pass
148147
149- threads = []
150-
151148 with sentry_sdk .traces .start_span (
152149 name = "root span" , attributes = {"sentry.op" : "outer-trx" }, parent_span = None
153150 ):
@@ -158,18 +155,21 @@ def do_some_work(number):
158155 ):
159156 t = Thread (target = do_some_work , args = (number ,))
160157 t .start ()
161- threads .append (t )
162-
163- for t in threads :
164- t .join ()
158+ t .join ()
165159
166- time .sleep (0.1 )
167160 sentry_sdk .flush ()
168161
169162 spans = [item .payload for item in items ]
170163
171- # Free-threaded builds set thread_inherit_context to True, otherwise thread_inherit_context is False
172- if propagate_scope or getattr (sys .flags , "thread_inherit_context" , None ):
164+ # Filter to the main trace only (child threads with propagate_scope=False
165+ # create spans on a separate trace that confuse render_span_tree).
166+ root = next (s for s in spans if s .get ("is_segment" ) and s ["name" ] == "root span" )
167+ spans = [s for s in spans if s ["trace_id" ] == root ["trace_id" ]]
168+
169+ expects_child_spans = propagate_scope or getattr (
170+ sys .flags , "thread_inherit_context" , None
171+ )
172+ if expects_child_spans :
173173 assert render_span_tree (spans ) == dedent (
174174 """\
175175 - sentry.op="outer-trx": name="root span"
@@ -236,9 +236,13 @@ def do_some_work(number):
236236 sentry_sdk .flush ()
237237
238238 spans = [item .payload for item in items ]
239+ root = next (s for s in spans if s .get ("is_segment" ) and s ["name" ] == "root span" )
240+ spans = [s for s in spans if s ["trace_id" ] == root ["trace_id" ]]
239241
240- # Free-threaded builds set thread_inherit_context to True, otherwise thread_inherit_context is False
241- if propagate_scope or getattr (sys .flags , "thread_inherit_context" , None ):
242+ expects_child_spans = propagate_scope or getattr (
243+ sys .flags , "thread_inherit_context" , None
244+ )
245+ if expects_child_spans :
242246 assert render_span_tree (spans ) == dedent (
243247 """\
244248 - sentry.op="outer-trx": name="root span"
0 commit comments