Skip to content

Commit f239d12

Browse files
committed
fix: Write child spans into scope
1 parent c4c2202 commit f239d12

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

sentry_sdk/hub.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,10 @@ def span(self, span=None, **kwargs):
372372
yield span
373373
return
374374

375+
_, scope = self._stack[-1]
376+
old_span = scope.span
377+
scope.span = span
378+
375379
try:
376380
yield span
377381
except Exception:
@@ -382,6 +386,7 @@ def span(self, span=None, **kwargs):
382386
finally:
383387
span.finish()
384388
self.finish_trace(span)
389+
scope.span = old_span
385390

386391
def trace(self, *args, **kwargs):
387392
return self.span(self.start_trace(*args, **kwargs))
@@ -405,7 +410,6 @@ def start_trace(self, span=None, **kwargs):
405410
span.trace_id,
406411
scope.span.trace_id,
407412
)
408-
scope.span = span
409413

410414
return span
411415

sentry_sdk/scope.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,8 @@ def span(self):
106106
@span.setter
107107
def span(self, span):
108108
self._span = span
109-
if span.transaction:
109+
if span is not None and span.transaction:
110110
self._transaction = span.transaction
111-
elif self._transaction:
112-
span.transaction = self._transaction
113111

114112
def set_tag(self, key, value):
115113
# type: (str, Any) -> None

tests/integrations/celery/test_celery.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,9 @@ def dummy_task(x, y):
6262
foo = 42 # noqa
6363
return x / y
6464

65-
span = Hub.current.start_trace()
66-
67-
invocation(dummy_task, 1, 2)
68-
invocation(dummy_task, 1, 0)
65+
with Hub.current.trace() as span:
66+
invocation(dummy_task, 1, 2)
67+
invocation(dummy_task, 1, 0)
6968

7069
event, = events
7170

@@ -115,8 +114,8 @@ def test_simple_no_propagation(capture_events, init_celery):
115114
def dummy_task():
116115
1 / 0
117116

118-
span = Hub.current.start_trace()
119-
dummy_task.delay()
117+
with Hub.current.trace() as span:
118+
dummy_task.delay()
120119

121120
event, = events
122121
assert event["contexts"]["trace"]["trace_id"] != span.trace_id

0 commit comments

Comments
 (0)