From 187e7e4e804381819da560ac10cd2ee2d1ef8500 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Fri, 21 Sep 2018 17:20:05 +0200 Subject: [PATCH] fix: Dont crash on breadcrumb overflow Fix #67 --- sentry_sdk/hub.py | 4 ++-- tests/test_basics.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/sentry_sdk/hub.py b/sentry_sdk/hub.py index b161a4d40e..a7056c660c 100644 --- a/sentry_sdk/hub.py +++ b/sentry_sdk/hub.py @@ -205,8 +205,8 @@ def add_breadcrumb(self, crumb=None, hint=None, **kwargs): scope._breadcrumbs.append(crumb) else: logger.info("before breadcrumb dropped breadcrumb (%s)", original_crumb) - while len(scope._breadcrumbs) >= client.options["max_breadcrumbs"]: - scope._breadcrumbs.popleft() + while len(scope._breadcrumbs) > client.options["max_breadcrumbs"]: + scope._breadcrumbs.pop(0) def push_scope(self, callback=None): """Pushes a new layer on the scope stack. Returns a context manager diff --git a/tests/test_basics.py b/tests/test_basics.py index 1744c1ab20..f5fac31d55 100644 --- a/tests/test_basics.py +++ b/tests/test_basics.py @@ -139,3 +139,20 @@ def test_push_scope_null_client(sentry_init, capture_events): capture_exception(e) assert len(events) == 0 + + +def test_breadcrumbs_overflow(sentry_init, capture_events): + sentry_init(max_breadcrumbs=10) + + for i in range(20): + add_breadcrumb( + category="auth", message="Authenticated user %s" % i, level="info" + ) + + events = capture_events() + + capture_exception(ValueError()) + + event, = events + + assert len(event["breadcrumbs"]) == 10