Skip to content

Commit 5bd4775

Browse files
authored
feat(client_reports): Report before_send as client report (getsentry#1211)
1 parent 555e4ef commit 5bd4775

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ sentry-sdk==0.10.1
2020

2121
A major release `N` implies the previous release `N-1` will no longer receive updates. We generally do not backport bugfixes to older versions unless they are security relevant. However, feel free to ask for backports of specific commits on the bugtracker.
2222

23+
## Unreleased
24+
25+
- Also record client outcomes for before send.
26+
2327
## 1.4.3
2428

2529
- Turned client reports on by default.

sentry_sdk/client.py

+4
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,10 @@ def _prepare_event(
201201
new_event = before_send(event, hint or {})
202202
if new_event is None:
203203
logger.info("before send dropped event (%s)", event)
204+
if self.transport:
205+
self.transport.record_lost_event(
206+
"before_send", data_category="error"
207+
)
204208
event = new_event # type: ignore
205209

206210
return event

tests/test_basics.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ def test_event_id(sentry_init, capture_events):
7777
assert Hub.current.last_event_id() == event_id
7878

7979

80-
def test_option_callback(sentry_init, capture_events):
80+
def test_option_callback(sentry_init, capture_events, monkeypatch):
8181
drop_events = False
8282
drop_breadcrumbs = False
83+
reports = []
84+
85+
def record_lost_event(reason, data_category=None, item=None):
86+
reports.append((reason, data_category))
8387

8488
def before_send(event, hint):
8589
assert isinstance(hint["exc_info"][1], ValueError)
@@ -96,6 +100,10 @@ def before_breadcrumb(crumb, hint):
96100
sentry_init(before_send=before_send, before_breadcrumb=before_breadcrumb)
97101
events = capture_events()
98102

103+
monkeypatch.setattr(
104+
Hub.current.client.transport, "record_lost_event", record_lost_event
105+
)
106+
99107
def do_this():
100108
add_breadcrumb(message="Hello", hint={"foo": 42})
101109
try:
@@ -106,8 +114,10 @@ def do_this():
106114
do_this()
107115
drop_breadcrumbs = True
108116
do_this()
117+
assert not reports
109118
drop_events = True
110119
do_this()
120+
assert reports == [("before_send", "error")]
111121

112122
normal, no_crumbs = events
113123

0 commit comments

Comments
 (0)