From 2a7b9693b059ec7852b73636c7ec517c9e5a382a Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Fri, 22 Apr 2022 08:07:06 +0200 Subject: [PATCH 1/4] Change order of filtering mechanisms and add early return --- .../src/main/java/io/sentry/SentryClient.java | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/sentry/src/main/java/io/sentry/SentryClient.java b/sentry/src/main/java/io/sentry/SentryClient.java index ee4f14a1dcf..c31295d74ab 100644 --- a/sentry/src/main/java/io/sentry/SentryClient.java +++ b/sentry/src/main/java/io/sentry/SentryClient.java @@ -81,6 +81,22 @@ private boolean shouldApplyScopeData( options.getLogger().log(SentryLevel.DEBUG, "Capturing event: %s", event.getEventId()); + if (event != null) { + if (event.getThrowable() != null + && options.containsIgnoredExceptionForType(event.getThrowable())) { + options + .getLogger() + .log( + SentryLevel.DEBUG, + "Event was dropped as the exception %s is ignored", + event.getThrowable().getClass()); + options + .getClientReportRecorder() + .recordLostEvent(DiscardReason.EVENT_PROCESSOR, DataCategory.Error); + return SentryId.EMPTY_ID; + } + } + if (shouldApplyScopeData(event, hint)) { // Event has already passed through here before it was cached // Going through again could be reading data that is no longer relevant @@ -95,6 +111,21 @@ private boolean shouldApplyScopeData( event = processEvent(event, hint, options.getEventProcessors()); + if (event != null) { + event = executeBeforeSend(event, hint); + + if (event == null) { + options.getLogger().log(SentryLevel.DEBUG, "Event was dropped by beforeSend"); + options + .getClientReportRecorder() + .recordLostEvent(DiscardReason.BEFORE_SEND, DataCategory.Error); + } + } + + if (event == null) { + return SentryId.EMPTY_ID; + } + Session session = null; if (event != null) { @@ -115,30 +146,6 @@ private boolean shouldApplyScopeData( } } - if (event != null) { - if (event.getThrowable() != null - && options.containsIgnoredExceptionForType(event.getThrowable())) { - options - .getLogger() - .log( - SentryLevel.DEBUG, - "Event was dropped as the exception %s is ignored", - event.getThrowable().getClass()); - options - .getClientReportRecorder() - .recordLostEvent(DiscardReason.EVENT_PROCESSOR, DataCategory.Error); - return SentryId.EMPTY_ID; - } - event = executeBeforeSend(event, hint); - - if (event == null) { - options.getLogger().log(SentryLevel.DEBUG, "Event was dropped by beforeSend"); - options - .getClientReportRecorder() - .recordLostEvent(DiscardReason.BEFORE_SEND, DataCategory.Error); - } - } - SentryId sentryId = SentryId.EMPTY_ID; if (event != null && event.getEventId() != null) { sentryId = event.getEventId(); From 9f6f2baafec1ff08b87052fd1a4312f3bf47e8cc Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 26 Apr 2022 11:05:51 +0200 Subject: [PATCH 2/4] Extract variable for throwable --- sentry/src/main/java/io/sentry/SentryClient.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sentry/src/main/java/io/sentry/SentryClient.java b/sentry/src/main/java/io/sentry/SentryClient.java index c31295d74ab..f93da04f8ae 100644 --- a/sentry/src/main/java/io/sentry/SentryClient.java +++ b/sentry/src/main/java/io/sentry/SentryClient.java @@ -82,14 +82,14 @@ private boolean shouldApplyScopeData( options.getLogger().log(SentryLevel.DEBUG, "Capturing event: %s", event.getEventId()); if (event != null) { - if (event.getThrowable() != null - && options.containsIgnoredExceptionForType(event.getThrowable())) { + Throwable eventThrowable = event.getThrowable(); + if (eventThrowable != null && options.containsIgnoredExceptionForType(eventThrowable)) { options .getLogger() .log( SentryLevel.DEBUG, "Event was dropped as the exception %s is ignored", - event.getThrowable().getClass()); + eventThrowable.getClass()); options .getClientReportRecorder() .recordLostEvent(DiscardReason.EVENT_PROCESSOR, DataCategory.Error); From c5eff6cf8e0fc81c3500d7b721930ee41fa6b4af Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 26 Apr 2022 11:31:39 +0200 Subject: [PATCH 3/4] Add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e97eeca710..7251579738d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased * Fix: Allow disabling sending of client reports via Android Manifest and external options (#2007) +* Fix: Change order of event filtering mechanisms (#2001) ## 6.0.0-alpha.6 From 1f51c55f3f20b5c99e2dca20aeaf8a54805c330e Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 26 Apr 2022 12:22:15 +0200 Subject: [PATCH 4/4] Make var final --- sentry/src/main/java/io/sentry/SentryClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry/src/main/java/io/sentry/SentryClient.java b/sentry/src/main/java/io/sentry/SentryClient.java index f93da04f8ae..7b094f6d377 100644 --- a/sentry/src/main/java/io/sentry/SentryClient.java +++ b/sentry/src/main/java/io/sentry/SentryClient.java @@ -82,7 +82,7 @@ private boolean shouldApplyScopeData( options.getLogger().log(SentryLevel.DEBUG, "Capturing event: %s", event.getEventId()); if (event != null) { - Throwable eventThrowable = event.getThrowable(); + final Throwable eventThrowable = event.getThrowable(); if (eventThrowable != null && options.containsIgnoredExceptionForType(eventThrowable)) { options .getLogger()