From 6294b50588f7d73c9bf23ec1cd6409a8204c67be Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 11 Nov 2021 10:57:49 +0100 Subject: [PATCH 1/4] Fix: Do not crash when event processors throw a lower level Throwable class --- CHANGELOG.md | 1 + .../core/PerformanceAndroidEventProcessor.java | 17 +++++++++++++++++ .../src/main/java/io/sentry/SentryClient.java | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a73f8996a..4ce3b80471 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased * Feat: Add `graphql-java` instrumentation (#1777) +* Fix: Do not crash when event processors throw a lower level Throwable class (#) ## 5.3.0 diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/PerformanceAndroidEventProcessor.java b/sentry-android-core/src/main/java/io/sentry/android/core/PerformanceAndroidEventProcessor.java index 5b9061b8fa..543d10746a 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/PerformanceAndroidEventProcessor.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/PerformanceAndroidEventProcessor.java @@ -5,6 +5,7 @@ import static io.sentry.android.core.ActivityLifecycleIntegration.UI_LOAD_OP; import io.sentry.EventProcessor; +import io.sentry.SentryEvent; import io.sentry.SpanContext; import io.sentry.protocol.MeasurementValue; import io.sentry.protocol.SentryId; @@ -32,6 +33,22 @@ final class PerformanceAndroidEventProcessor implements EventProcessor { Objects.requireNonNull(activityFramesTracker, "ActivityFramesTracker is required"); } + /** + * Returns the event itself + * + * @param event the SentryEvent the SentryEvent + * @param hint the Hint the Hint + * @return returns the event itself + */ + @Override + @Nullable + public SentryEvent process(@NotNull SentryEvent event, @Nullable Object hint) { + // that's only necessary because on newer versions of Unity, if not overriding this method, it's + // throwing 'java.lang.AbstractMethodError: abstract method' and the reason is probably + // compilation mismatch. + return event; + } + @Override public synchronized @NotNull SentryTransaction process( @NotNull SentryTransaction transaction, @Nullable Object hint) { diff --git a/sentry/src/main/java/io/sentry/SentryClient.java b/sentry/src/main/java/io/sentry/SentryClient.java index aba4b105ba..c5a2fa43d3 100644 --- a/sentry/src/main/java/io/sentry/SentryClient.java +++ b/sentry/src/main/java/io/sentry/SentryClient.java @@ -204,7 +204,7 @@ private SentryEvent processEvent( for (final EventProcessor processor : eventProcessors) { try { event = processor.process(event, hint); - } catch (Exception e) { + } catch (Throwable e) { options .getLogger() .log( @@ -235,7 +235,7 @@ private SentryTransaction processTransaction( for (final EventProcessor processor : eventProcessors) { try { transaction = processor.process(transaction, hint); - } catch (Exception e) { + } catch (Throwable e) { options .getLogger() .log( From 86390902ae7bf044c133b86d1e6c4e2b3d6a4f38 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 11 Nov 2021 10:58:06 +0100 Subject: [PATCH 2/4] pr id --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ce3b80471..6595220bac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## Unreleased * Feat: Add `graphql-java` instrumentation (#1777) -* Fix: Do not crash when event processors throw a lower level Throwable class (#) +* Fix: Do not crash when event processors throw a lower level Throwable class (#1800) ## 5.3.0 From f76228afa5f9a45b82fe874761c15ab58bd4fbcc Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 11 Nov 2021 11:00:40 +0100 Subject: [PATCH 3/4] test --- sentry/src/test/java/io/sentry/SentryClientTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry/src/test/java/io/sentry/SentryClientTest.kt b/sentry/src/test/java/io/sentry/SentryClientTest.kt index d8bd219db0..cbaebbe5ea 100644 --- a/sentry/src/test/java/io/sentry/SentryClientTest.kt +++ b/sentry/src/test/java/io/sentry/SentryClientTest.kt @@ -1299,7 +1299,7 @@ class SentryClientTest { private fun eventProcessorThrows(): EventProcessor { return object : EventProcessor { override fun process(event: SentryEvent, hint: Any?): SentryEvent? { - throw RuntimeException() + throw Throwable() } } } From 60df295a97b325f91f1e1544dd88e43f116390fe Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Thu, 11 Nov 2021 12:48:29 +0100 Subject: [PATCH 4/4] fix --- sentry/src/test/java/io/sentry/SentryClientTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/sentry/src/test/java/io/sentry/SentryClientTest.kt b/sentry/src/test/java/io/sentry/SentryClientTest.kt index cbaebbe5ea..c7975f1b90 100644 --- a/sentry/src/test/java/io/sentry/SentryClientTest.kt +++ b/sentry/src/test/java/io/sentry/SentryClientTest.kt @@ -32,7 +32,6 @@ import java.io.IOException import java.io.InputStreamReader import java.lang.IllegalArgumentException import java.lang.IllegalStateException -import java.lang.RuntimeException import java.nio.charset.Charset import java.util.Arrays import java.util.UUID