diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cf5dd01d3..fd7ff496ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fix + +* Change order of event filtering mechanisms (#2001) + ## 6.0.0-beta.2 * Fix: Android profiling initializes on first profile start (#2009) diff --git a/sentry/src/main/java/io/sentry/SentryClient.java b/sentry/src/main/java/io/sentry/SentryClient.java index ee4f14a1dc..7b094f6d37 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) { + final Throwable eventThrowable = event.getThrowable(); + if (eventThrowable != null && options.containsIgnoredExceptionForType(eventThrowable)) { + options + .getLogger() + .log( + SentryLevel.DEBUG, + "Event was dropped as the exception %s is ignored", + eventThrowable.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();