Skip to content

Commit 35af39a

Browse files
lblodergetsentry-botadinauer
authored
Improve ignored check performance (#3992)
* add FilterString, use FilterString when adding ignoredSpanOrigins * add test, setIgnoredSpanOrigins as List of String * add cache map for SpanUtils, use precompiled pattern and equals first approach for CheckInUtils and TracingUtils * adapt tests to use the new setIgnored* methods * add changelog * Format code * Update sentry/src/main/java/io/sentry/FilterString.java Co-authored-by: Alexander Dinauer <[email protected]> * add tests for multiple invocations * Format code --------- Co-authored-by: Sentry Github Bot <[email protected]> Co-authored-by: Alexander Dinauer <[email protected]>
1 parent e02c690 commit 35af39a

File tree

28 files changed

+242
-72
lines changed

28 files changed

+242
-72
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
- This keeps it from being garbage collected too early
3535
- Close backpressure monitor on SDK shutdown ([#3998](https://github.com/getsentry/sentry-java/pull/3998))
3636
- Due to the backpressure monitor rescheduling a task to run every 10s, it very likely caused shutdown to wait the full `shutdownTimeoutMillis` (defaulting to 2s) instead of being able to terminate immediately
37+
- Improve ignored check performance ([#3992](https://github.com/getsentry/sentry-java/pull/3992))
38+
- Checking if a span origin, a transaction or a checkIn should be ignored is now faster
3739

3840
## 8.0.0-rc.2
3941

sentry-apollo-3/src/test/java/io/sentry/apollo3/SentryApollo3InterceptorTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ class SentryApollo3InterceptorTest {
210210

211211
@Test
212212
fun `does not add sentry-trace header when span origin is ignored`() {
213-
fixture.options.ignoredSpanOrigins = listOf("auto.graphql.apollo3")
213+
fixture.options.setIgnoredSpanOrigins(listOf("auto.graphql.apollo3"))
214214
executeQuery(isSpanActive = false)
215215

216216
val recorderRequest = fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!

sentry-apollo/src/test/java/io/sentry/apollo/SentryApolloInterceptorTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class SentryApolloInterceptorTest {
163163

164164
@Test
165165
fun `does not add sentry-trace header when span origin is ignored`() {
166-
fixture.options.ignoredSpanOrigins = listOf("auto.graphql.apollo")
166+
fixture.options.setIgnoredSpanOrigins(listOf("auto.graphql.apollo"))
167167
executeQuery(isSpanActive = false)
168168

169169
val recorderRequest = fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!

sentry-okhttp/src/test/java/io/sentry/okhttp/SentryOkHttpInterceptorTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class SentryOkHttpInterceptorTest {
213213
@Test
214214
fun `does not add sentry-trace header when span origin is ignored`() {
215215
val sut = fixture.getSut(isSpanActive = false) { options ->
216-
options.ignoredSpanOrigins = listOf("auto.http.okhttp")
216+
options.setIgnoredSpanOrigins(listOf("auto.http.okhttp"))
217217
}
218218
sut.newCall(getRequest()).execute()
219219
val recorderRequest = fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!

sentry-openfeign/src/test/kotlin/io/sentry/openfeign/SentryFeignClientTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class SentryFeignClientTest {
133133
@Test
134134
fun `does not add sentry trace header when span origin is ignored`() {
135135
fixture.sentryOptions.dsn = "https://[email protected]/proj"
136-
fixture.sentryOptions.ignoredSpanOrigins = listOf("auto.http.openfeign")
136+
fixture.sentryOptions.setIgnoredSpanOrigins(listOf("auto.http.openfeign"))
137137
val sut = fixture.getSut(isSpanActive = false)
138138
sut.getOk()
139139
val recorderRequest = fixture.server.takeRequest(mockServerRequestTimeoutMillis, TimeUnit.MILLISECONDS)!!

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentryAutoConfigurationTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.opentelemetry.api.OpenTelemetry
55
import io.sentry.AsyncHttpTransportFactory
66
import io.sentry.Breadcrumb
77
import io.sentry.EventProcessor
8+
import io.sentry.FilterString
89
import io.sentry.Hint
910
import io.sentry.IScopes
1011
import io.sentry.ITransportFactory
@@ -213,8 +214,8 @@ class SentryAutoConfigurationTest {
213214
assertThat(options.tracePropagationTargets).containsOnly("localhost", "^(http|https)://api\\..*\$")
214215
assertThat(options.isEnabled).isEqualTo(false)
215216
assertThat(options.isSendModules).isEqualTo(false)
216-
assertThat(options.ignoredCheckIns).containsOnly("slug1", "slugB")
217-
assertThat(options.ignoredTransactions).containsOnly("transactionName1", "transactionNameB")
217+
assertThat(options.ignoredCheckIns).containsOnly(FilterString("slug1"), FilterString("slugB"))
218+
assertThat(options.ignoredTransactions).containsOnly(FilterString("transactionName1"), FilterString("transactionNameB"))
218219
assertThat(options.isEnableBackpressureHandling).isEqualTo(false)
219220
assertThat(options.isForceInit).isEqualTo(true)
220221
assertThat(options.isGlobalHubMode).isEqualTo(true)

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentrySpanRestClientCustomizerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class SentrySpanRestClientCustomizerTest {
251251

252252
@Test
253253
fun `does not add sentry-trace header if span origin is ignored`() {
254-
fixture.sentryOptions.ignoredSpanOrigins = listOf("auto.http.spring_jakarta.restclient")
254+
fixture.sentryOptions.setIgnoredSpanOrigins(listOf("auto.http.spring_jakarta.restclient"))
255255
val sut = fixture.getSut(isTransactionActive = false)
256256
val headers = HttpHeaders()
257257

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentrySpanRestTemplateCustomizerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class SentrySpanRestTemplateCustomizerTest {
201201

202202
@Test
203203
fun `does not add sentry-trace header when span origin is ignored`() {
204-
fixture.sentryOptions.ignoredSpanOrigins = listOf("auto.http.spring_jakarta.resttemplate")
204+
fixture.sentryOptions.setIgnoredSpanOrigins(listOf("auto.http.spring_jakarta.resttemplate"))
205205
val sut = fixture.getSut(isTransactionActive = false)
206206
val headers = HttpHeaders()
207207
val requestEntity = HttpEntity<Unit>(headers)

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/SentrySpanWebClientCustomizerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class SentrySpanWebClientCustomizerTest {
168168
@Test
169169
fun `does not add sentry-trace header when span origin is ignored`() {
170170
val sut = fixture.getSut(isTransactionActive = false, includeMockServerInTracingOrigins = true) { options ->
171-
options.ignoredSpanOrigins = listOf("auto.http.spring_jakarta.webclient")
171+
options.setIgnoredSpanOrigins(listOf("auto.http.spring_jakarta.webclient"))
172172
}
173173
sut
174174
.get()

sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/SentryAutoConfigurationTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.opentelemetry.api.OpenTelemetry
55
import io.sentry.AsyncHttpTransportFactory
66
import io.sentry.Breadcrumb
77
import io.sentry.EventProcessor
8+
import io.sentry.FilterString
89
import io.sentry.Hint
910
import io.sentry.IScopes
1011
import io.sentry.ITransportFactory
@@ -212,8 +213,8 @@ class SentryAutoConfigurationTest {
212213
assertThat(options.tracePropagationTargets).containsOnly("localhost", "^(http|https)://api\\..*\$")
213214
assertThat(options.isEnabled).isEqualTo(false)
214215
assertThat(options.isSendModules).isEqualTo(false)
215-
assertThat(options.ignoredCheckIns).containsOnly("slug1", "slugB")
216-
assertThat(options.ignoredTransactions).containsOnly("transactionName1", "transactionNameB")
216+
assertThat(options.ignoredCheckIns).containsOnly(FilterString("slug1"), FilterString("slugB"))
217+
assertThat(options.ignoredTransactions).containsOnly(FilterString("transactionName1"), FilterString("transactionNameB"))
217218
assertThat(options.isEnableBackpressureHandling).isEqualTo(false)
218219
assertThat(options.isForceInit).isEqualTo(true)
219220
assertThat(options.isGlobalHubMode).isEqualTo(true)

0 commit comments

Comments
 (0)