Skip to content

Commit 7d14008

Browse files
committed
Some test showing trx in trx is a bad idea
1 parent 6000f87 commit 7d14008

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

tests/integrations/threading/test_threading.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,57 @@ def target():
172172
assert Thread.run.__qualname__ == original_run.__qualname__
173173
assert t.run.__name__ == "run"
174174
assert t.run.__qualname__ == original_run.__qualname__
175+
176+
177+
def test_trx_in_trx_not_working(sentry_init, capture_events):
178+
sentry_init(
179+
traces_sample_rate=1.0,
180+
integrations=[ThreadingIntegration(propagate_hub=True)],
181+
)
182+
events = capture_events()
183+
184+
def do_some_work(number):
185+
with sentry_sdk.start_transaction(name=f"inner-trx-{number}") as trx_inner:
186+
print(f"Inner Trx: {trx_inner}")
187+
with sentry_sdk.start_span(op=f"inner-{number}-a", name=str(number)):
188+
with sentry_sdk.start_span(op=f"inner-{number}-b", name=str(number)):
189+
with sentry_sdk.start_span(
190+
op=f"inner-{number}-c", name=str(number)
191+
):
192+
with sentry_sdk.start_span(
193+
op=f"inner-{number}-d", name=str(number)
194+
):
195+
with sentry_sdk.start_span(
196+
op=f"inner-{number}-e", name=str(number)
197+
):
198+
with sentry_sdk.start_span(
199+
op=f"inner-{number}-f", name=str(number)
200+
):
201+
pass
202+
203+
with sentry_sdk.start_transaction(name="outer-trx") as trx_outer:
204+
print(f"Outer Trx: {trx_outer}")
205+
with futures.ThreadPoolExecutor(max_workers=2) as executor:
206+
for number in range(20):
207+
with sentry_sdk.start_span(
208+
op=f"outer1-{number}", name=str(number)
209+
) as span:
210+
with sentry_sdk.start_span(
211+
op=f"outer2-{number}", name=str(number)
212+
) as span:
213+
with sentry_sdk.start_span(
214+
op=f"outer3-{number}", name=str(number)
215+
) as span:
216+
executor.submit(do_some_work, number)
217+
218+
wrong_span_found_in_trx = False
219+
for event in events:
220+
prefix = "inner" if event["transaction"].startswith("inner") else "outer"
221+
for span in event["spans"]:
222+
if not span["op"].startswith(prefix):
223+
wrong_span_found_in_trx = True
224+
break
225+
226+
assert (
227+
wrong_span_found_in_trx
228+
), "No wrong span found in transaction. It is excepted that there is one. (as we are testing a race condition, this test might fail randomly)"

0 commit comments

Comments
 (0)