From 18ecfee6cc8d099115e3f4f604030073288bd705 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Mon, 25 Mar 2024 12:57:11 +0100 Subject: [PATCH 1/4] enable backpressure management by default --- sentry/src/main/java/io/sentry/Sentry.java | 2 +- sentry/src/main/java/io/sentry/SentryOptions.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sentry/src/main/java/io/sentry/Sentry.java b/sentry/src/main/java/io/sentry/Sentry.java index 5196d0f31a6..f157256ce53 100644 --- a/sentry/src/main/java/io/sentry/Sentry.java +++ b/sentry/src/main/java/io/sentry/Sentry.java @@ -474,7 +474,7 @@ private static boolean initConfigurations(final @NotNull SentryOptions options) options.addPerformanceCollector(new JavaMemoryCollector()); } - if (options.isEnableBackpressureHandling()) { + if (options.isEnableBackpressureHandling() && Platform.isJvm()) { options.setBackpressureMonitor(new BackpressureMonitor(options, HubAdapter.getInstance())); options.getBackpressureMonitor().start(); } diff --git a/sentry/src/main/java/io/sentry/SentryOptions.java b/sentry/src/main/java/io/sentry/SentryOptions.java index b3bf66a1c2c..63d1ccba22a 100644 --- a/sentry/src/main/java/io/sentry/SentryOptions.java +++ b/sentry/src/main/java/io/sentry/SentryOptions.java @@ -454,10 +454,9 @@ public class SentryOptions { /** Contains a list of monitor slugs for which check-ins should not be sent. */ @ApiStatus.Experimental private @Nullable List ignoredCheckIns = null; - @ApiStatus.Experimental private @NotNull IBackpressureMonitor backpressureMonitor = NoOpBackpressureMonitor.getInstance(); - @ApiStatus.Experimental private boolean enableBackpressureHandling = false; + private boolean enableBackpressureHandling = true; /** Whether to profile app launches, depending on profilesSampler or profilesSampleRate. */ private boolean enableAppStartProfiling = false; From 79090751b2a53c489f3aa5d7b48cce567d9441f0 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 26 Mar 2024 06:32:26 +0100 Subject: [PATCH 2/4] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b578ed17f0..99e1135eee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features - Add support for Spring Rest Client ([#3199](https://github.com/getsentry/sentry-java/pull/3199)) +- Enable backpressure management by default ([#3284](https://github.com/getsentry/sentry-java/pull/3284)) ## 7.6.0 From 07c106ba897d4b83e330121ac66f77c021d6fef6 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 26 Mar 2024 06:32:50 +0100 Subject: [PATCH 3/4] adapt tests --- .../src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt | 1 + .../test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt | 1 + .../kotlin/io/sentry/logback/SentryAppenderTest.kt | 1 + .../boot/jakarta/it/SentrySpringIntegrationTest.kt | 2 +- .../spring/boot/it/SentrySpringIntegrationTest.kt | 2 +- .../jakarta/webflux/SentryWebfluxIntegrationTest.kt | 1 + sentry/src/test/java/io/sentry/ExternalOptionsTest.kt | 6 +++--- sentry/src/test/java/io/sentry/SentryOptionsTest.kt | 10 ++++------ 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt b/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt index 64b9c846567..eaef25f0703 100644 --- a/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt +++ b/sentry-jul/src/test/kotlin/io/sentry/jul/SentryHandlerTest.kt @@ -63,6 +63,7 @@ class SentryHandlerTest { it.dsn = "http://key@localhost/proj" it.environment = "manual-environment" it.setTransportFactory { _, _ -> transport } + it.isEnableBackpressureHandling = false } fixture = Fixture(transport = transport) fixture.logger.severe("testing environment field") diff --git a/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt b/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt index b6f004232c3..a99096d3150 100644 --- a/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt +++ b/sentry-log4j2/src/test/kotlin/io/sentry/log4j2/SentryAppenderTest.kt @@ -86,6 +86,7 @@ class SentryAppenderTest { it.dsn = "http://key@localhost/proj" it.environment = "manual-environment" it.setTransportFactory(fixture.transportFactory) + it.isEnableBackpressureHandling = false } val logger = fixture.getSut() logger.error("testing environment field") diff --git a/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt b/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt index 4217954be1f..b7797cadc74 100644 --- a/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt +++ b/sentry-logback/src/test/kotlin/io/sentry/logback/SentryAppenderTest.kt @@ -86,6 +86,7 @@ class SentryAppenderTest { it.dsn = "http://key@localhost/proj" it.environment = "manual-environment" it.setTransportFactory(fixture.transportFactory) + it.isEnableBackpressureHandling = false } fixture.logger.error("testing environment field") diff --git a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/it/SentrySpringIntegrationTest.kt b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/it/SentrySpringIntegrationTest.kt index 4b8a0c26be1..288864abcb7 100644 --- a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/it/SentrySpringIntegrationTest.kt +++ b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/it/SentrySpringIntegrationTest.kt @@ -52,7 +52,7 @@ import kotlin.test.Test @SpringBootTest( classes = [App::class], webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, - properties = ["sentry.dsn=http://key@localhost/proj", "sentry.send-default-pii=true", "sentry.traces-sample-rate=1.0", "sentry.max-request-body-size=medium"] + properties = ["sentry.dsn=http://key@localhost/proj", "sentry.send-default-pii=true", "sentry.traces-sample-rate=1.0", "sentry.max-request-body-size=medium", "sentry.enable-backpressure-handling=false"] ) class SentrySpringIntegrationTest { diff --git a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/it/SentrySpringIntegrationTest.kt b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/it/SentrySpringIntegrationTest.kt index eb6d159a7cd..a1a54ea49b5 100644 --- a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/it/SentrySpringIntegrationTest.kt +++ b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/it/SentrySpringIntegrationTest.kt @@ -52,7 +52,7 @@ import kotlin.test.Test @SpringBootTest( classes = [App::class], webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, - properties = ["sentry.dsn=http://key@localhost/proj", "sentry.send-default-pii=true", "sentry.traces-sample-rate=1.0", "sentry.max-request-body-size=medium"] + properties = ["sentry.dsn=http://key@localhost/proj", "sentry.send-default-pii=true", "sentry.traces-sample-rate=1.0", "sentry.max-request-body-size=medium", "sentry.enable-backpressure-handling=false"] ) class SentrySpringIntegrationTest { diff --git a/sentry-spring-jakarta/src/test/kotlin/io/sentry/spring/jakarta/webflux/SentryWebfluxIntegrationTest.kt b/sentry-spring-jakarta/src/test/kotlin/io/sentry/spring/jakarta/webflux/SentryWebfluxIntegrationTest.kt index 3f4628ea3c2..2a74356415d 100644 --- a/sentry-spring-jakarta/src/test/kotlin/io/sentry/spring/jakarta/webflux/SentryWebfluxIntegrationTest.kt +++ b/sentry-spring-jakarta/src/test/kotlin/io/sentry/spring/jakarta/webflux/SentryWebfluxIntegrationTest.kt @@ -180,6 +180,7 @@ open class App { it.setDebug(true) it.setTransportFactory(transportFactory) it.enableTracing = true + it.isEnableBackpressureHandling = false } } } diff --git a/sentry/src/test/java/io/sentry/ExternalOptionsTest.kt b/sentry/src/test/java/io/sentry/ExternalOptionsTest.kt index b9bb296b89f..04c181b194a 100644 --- a/sentry/src/test/java/io/sentry/ExternalOptionsTest.kt +++ b/sentry/src/test/java/io/sentry/ExternalOptionsTest.kt @@ -269,9 +269,9 @@ class ExternalOptionsTest { } @Test - fun `creates options with enableBackpressureHandling set to true`() { - withPropertiesFile("enable-backpressure-handling=true") { options -> - assertTrue(options.isEnableBackpressureHandling == true) + fun `creates options with enableBackpressureHandling set to false`() { + withPropertiesFile("enable-backpressure-handling=false") { options -> + assertTrue(options.isEnableBackpressureHandling == false) } } diff --git a/sentry/src/test/java/io/sentry/SentryOptionsTest.kt b/sentry/src/test/java/io/sentry/SentryOptionsTest.kt index 162ce184a5d..1a6b027b721 100644 --- a/sentry/src/test/java/io/sentry/SentryOptionsTest.kt +++ b/sentry/src/test/java/io/sentry/SentryOptionsTest.kt @@ -1,6 +1,5 @@ package io.sentry -import io.sentry.backpressure.NoOpBackpressureMonitor import io.sentry.util.StringUtils import org.mockito.kotlin.mock import java.io.File @@ -370,7 +369,7 @@ class SentryOptionsTest { externalOptions.isEnablePrettySerializationOutput = false externalOptions.isSendModules = false externalOptions.ignoredCheckIns = listOf("slug1", "slug-B") - externalOptions.isEnableBackpressureHandling = true + externalOptions.isEnableBackpressureHandling = false externalOptions.cron = SentryOptions.Cron().apply { defaultCheckinMargin = 10L defaultMaxRuntime = 30L @@ -407,7 +406,7 @@ class SentryOptionsTest { assertFalse(options.isEnablePrettySerializationOutput) assertFalse(options.isSendModules) assertEquals(listOf("slug1", "slug-B"), options.ignoredCheckIns) - assertTrue(options.isEnableBackpressureHandling) + assertFalse(options.isEnableBackpressureHandling) assertNotNull(options.cron) assertEquals(10L, options.cron?.defaultCheckinMargin) assertEquals(30L, options.cron?.defaultMaxRuntime) @@ -563,9 +562,8 @@ class SentryOptionsTest { } @Test - fun `when options are initialized, enableBackpressureHandling is set to false by default`() { - assertFalse(SentryOptions().isEnableBackpressureHandling) - assertTrue(SentryOptions().backpressureMonitor is NoOpBackpressureMonitor) + fun `when options are initialized, enableBackpressureHandling is set to true by default`() { + assertTrue(SentryOptions().isEnableBackpressureHandling) } @Test From 3dc1f96a7b59026b94eeab34442572faea74be39 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Tue, 9 Apr 2024 08:19:27 +0200 Subject: [PATCH 4/4] change auto config tests --- .../sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt | 4 ++-- .../io/sentry/spring/boot/SentryAutoConfigurationTest.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt index aecb1b47126..f99a8b7b5a4 100644 --- a/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt +++ b/sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt @@ -169,7 +169,7 @@ class SentryAutoConfigurationTest { "sentry.enabled=false", "sentry.send-modules=false", "sentry.ignored-checkins=slug1,slugB", - "sentry.enable-backpressure-handling=true", + "sentry.enable-backpressure-handling=false", "sentry.cron.default-checkin-margin=10", "sentry.cron.default-max-runtime=30", "sentry.cron.default-timezone=America/New_York", @@ -206,7 +206,7 @@ class SentryAutoConfigurationTest { assertThat(options.isEnabled).isEqualTo(false) assertThat(options.isSendModules).isEqualTo(false) assertThat(options.ignoredCheckIns).containsOnly("slug1", "slugB") - assertThat(options.isEnableBackpressureHandling).isEqualTo(true) + assertThat(options.isEnableBackpressureHandling).isEqualTo(false) assertThat(options.cron).isNotNull assertThat(options.cron!!.defaultCheckinMargin).isEqualTo(10L) assertThat(options.cron!!.defaultMaxRuntime).isEqualTo(30L) diff --git a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt index c7fd177ec08..f3f3d0cf1a4 100644 --- a/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt +++ b/sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt @@ -168,7 +168,7 @@ class SentryAutoConfigurationTest { "sentry.enabled=false", "sentry.send-modules=false", "sentry.ignored-checkins=slug1,slugB", - "sentry.enable-backpressure-handling=true", + "sentry.enable-backpressure-handling=false", "sentry.cron.default-checkin-margin=10", "sentry.cron.default-max-runtime=30", "sentry.cron.default-timezone=America/New_York", @@ -205,7 +205,7 @@ class SentryAutoConfigurationTest { assertThat(options.isEnabled).isEqualTo(false) assertThat(options.isSendModules).isEqualTo(false) assertThat(options.ignoredCheckIns).containsOnly("slug1", "slugB") - assertThat(options.isEnableBackpressureHandling).isEqualTo(true) + assertThat(options.isEnableBackpressureHandling).isEqualTo(false) assertThat(options.cron).isNotNull assertThat(options.cron!!.defaultCheckinMargin).isEqualTo(10L) assertThat(options.cron!!.defaultMaxRuntime).isEqualTo(30L)