From 4c0aefb6296c3186b3a878fd32073fe1e9ba7c0e Mon Sep 17 00:00:00 2001 From: David Fernandez Date: Thu, 25 Nov 2021 11:59:04 +1100 Subject: [PATCH 1/2] Added optional scrubber for transaction events, mirroring before_send for events. --- sentry_sdk/client.py | 13 +++++++++++++ sentry_sdk/consts.py | 1 + 2 files changed, 14 insertions(+) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 67ed94cc38..aefd8122a1 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -194,6 +194,19 @@ def _prepare_event( ), ) + before_send_transaction = self.options["before_send_transaction"] + if before_send_transaction is not None and event.get("type") == "transaction": + new_event = None + with capture_internal_exceptions(): + new_event = before_send_transaction(event, hint or {}) + if new_event is None: + logger.info("before send transaction dropped event (%s)", event) + if self.transport: + self.transport.record_lost_event( + "before_send_transaction", data_category="error" + ) + event = new_event # type: ignore + before_send = self.options["before_send"] if before_send is not None and event.get("type") != "transaction": new_event = None diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index 0f7675fbcd..7c20f61fb2 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -67,6 +67,7 @@ def __init__( ignore_errors=[], # type: List[Union[type, str]] # noqa: B006 request_bodies="medium", # type: str before_send=None, # type: Optional[EventProcessor] + before_send_transaction=None, # type: Optional[EventProcessor] before_breadcrumb=None, # type: Optional[BreadcrumbProcessor] debug=False, # type: bool attach_stacktrace=False, # type: bool From 40bc58539c5ac3e4a79a449c16dba521018ee3c0 Mon Sep 17 00:00:00 2001 From: David Fernandez Date: Thu, 25 Nov 2021 12:19:11 +1100 Subject: [PATCH 2/2] Added early return to avoid subsequent error with dropped/None event. --- sentry_sdk/client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index aefd8122a1..155c4a0699 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -205,6 +205,7 @@ def _prepare_event( self.transport.record_lost_event( "before_send_transaction", data_category="error" ) + return None event = new_event # type: ignore before_send = self.options["before_send"]