Skip to content

Commit c96119f

Browse files
authored
fix: Clear breadcrumbs before new tx (#297)
* fix: Clear breadcrumbs before new tx * fix: mypy
1 parent fdb6861 commit c96119f

File tree

10 files changed

+24
-5
lines changed

10 files changed

+24
-5
lines changed

sentry_sdk/integrations/aiohttp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ async def inner():
5555

5656
with Hub(Hub.current) as hub:
5757
with hub.configure_scope() as scope:
58+
scope.clear_breadcrumbs()
5859
scope.add_event_processor(_make_request_processor(weak_request))
5960

6061
try:

sentry_sdk/integrations/aws_lambda.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def sentry_handler(event, context, *args, **kwargs):
2121

2222
with hub.push_scope() as scope:
2323
with capture_internal_exceptions():
24+
scope.clear_breadcrumbs()
2425
scope.transaction = context.function_name
2526
scope.add_event_processor(_make_request_event_processor(event, context))
2627

sentry_sdk/integrations/celery.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def _inner(*args, **kwargs):
4949

5050
with hub.push_scope() as scope:
5151
scope._name = "celery"
52+
scope.clear_breadcrumbs()
5253
scope.add_event_processor(_make_event_processor(task, *args, **kwargs))
5354

5455
return f(*args, **kwargs)

sentry_sdk/integrations/rq.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def sentry_patched_perform_job(self, job, *args, **kwargs):
3838
return old_perform_job(self, job, *args, **kwargs)
3939

4040
with hub.push_scope() as scope:
41+
scope.clear_breadcrumbs()
4142
scope.add_event_processor(_make_event_processor(weakref.ref(job)))
4243
rv = old_perform_job(self, job, *args, **kwargs)
4344

sentry_sdk/integrations/sanic.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ async def sentry_handle_request(self, request, *args, **kwargs):
6565

6666
with Hub(hub) as hub:
6767
with hub.configure_scope() as scope:
68+
scope.clear_breadcrumbs()
6869
scope.add_event_processor(_make_request_processor(weak_request))
6970

7071
response = old_handle_request(self, request, *args, **kwargs)

sentry_sdk/integrations/serverless.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import functools
22
import sys
33

4-
from sentry_sdk import Hub
4+
from sentry_sdk.hub import Hub
55
from sentry_sdk.utils import event_from_exception
66
from sentry_sdk._compat import reraise
77

@@ -10,7 +10,10 @@ def serverless_function(f=None, flush=True):
1010
def wrapper(f):
1111
@functools.wraps(f)
1212
def inner(*args, **kwargs):
13-
with Hub(Hub.current):
13+
with Hub(Hub.current) as hub:
14+
with hub.configure_scope() as scope:
15+
scope.clear_breadcrumbs()
16+
1417
try:
1518
return f(*args, **kwargs)
1619
except Exception:

sentry_sdk/integrations/tornado.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ async def sentry_execute_request_handler(self, *args, **kwargs):
6767

6868
with Hub(hub) as hub:
6969
with hub.configure_scope() as scope:
70+
scope.clear_breadcrumbs()
7071
scope.add_event_processor(_make_event_processor(weak_handler))
7172
return await old_execute(self, *args, **kwargs)
7273

sentry_sdk/integrations/wsgi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def __call__(self, environ, start_response):
7979
with hub:
8080
with capture_internal_exceptions():
8181
with hub.configure_scope() as scope:
82+
scope.clear_breadcrumbs()
8283
scope._name = "wsgi"
8384
scope.add_event_processor(_make_wsgi_event_processor(environ))
8485

sentry_sdk/scope.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,14 @@ def clear(self):
124124
self._contexts = {} # type: Dict[str, Dict]
125125
self._extras = {} # type: Dict[str, Any]
126126

127-
self._breadcrumbs = deque() # type: Deque[Dict]
128-
127+
self.clear_breadcrumbs()
129128
self._should_capture = True
130129

130+
def clear_breadcrumbs(self):
131+
# type: () -> None
132+
"""Clears breadcrumb buffer."""
133+
self._breadcrumbs = deque() # type: Deque[Dict]
134+
131135
def add_event_processor(self, func):
132136
# type: (Callable) -> None
133137
""""Register a scope local event processor on the scope.

tests/integrations/pyramid/test_pyramid.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from werkzeug.test import Client
1515

16-
from sentry_sdk import capture_message
16+
from sentry_sdk import capture_message, add_breadcrumb
1717
from sentry_sdk.integrations.pyramid import PyramidIntegration
1818

1919

@@ -61,8 +61,11 @@ def test_view_exceptions(
6161
events = capture_events()
6262
exceptions = capture_exceptions()
6363

64+
add_breadcrumb({"message": "hi"})
65+
6466
@route("/errors")
6567
def errors(request):
68+
add_breadcrumb({"message": "hi2"})
6669
1 / 0
6770

6871
client = get_client()
@@ -73,6 +76,8 @@ def errors(request):
7376
assert isinstance(error, ZeroDivisionError)
7477

7578
event, = events
79+
breadcrumb, = event["breadcrumbs"]
80+
assert breadcrumb["message"] == "hi2"
7681
assert event["exception"]["values"][0]["mechanism"]["type"] == "pyramid"
7782

7883

0 commit comments

Comments
 (0)