diff --git a/CHANGELOG.md b/CHANGELOG.md index 931fc2fe1fd..103651ac21c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,10 @@ ## Unreleased -## Features +### Features - Update normalization of metrics keys, tags and values ([#3332](https://github.com/getsentry/sentry-java/pull/3332)) +- Enable backpressure management by default ([#3284](https://github.com/getsentry/sentry-java/pull/3284)) ### Fixes 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/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-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/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) 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/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 18d18ecbb18..fe0dad01448 100644 --- a/sentry/src/main/java/io/sentry/SentryOptions.java +++ b/sentry/src/main/java/io/sentry/SentryOptions.java @@ -455,10 +455,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; 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 ba18b4fc772..b474d4e4e03 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 @@ -371,7 +370,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 @@ -409,7 +408,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) @@ -565,9 +564,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