Skip to content

Commit 6dcba10

Browse files
authored
Merge 8ef6ac5 into 6e4ede5
2 parents 6e4ede5 + 8ef6ac5 commit 6dcba10

File tree

7 files changed

+82
-1
lines changed

7 files changed

+82
-1
lines changed

sentry-spring-7/src/main/java/io/sentry/spring7/cache/SentryCacheWrapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,10 @@ public boolean invalidate() {
213213
}
214214

215215
private @Nullable ISpan startSpan(final @NotNull String operation, final @Nullable Object key) {
216+
if (!scopes.getOptions().isEnableCacheTracing()) {
217+
return null;
218+
}
219+
216220
final ISpan activeSpan = scopes.getSpan();
217221
if (activeSpan == null || activeSpan.isNoOp()) {
218222
return null;

sentry-spring-7/src/test/kotlin/io/sentry/spring7/cache/SentryCacheWrapperTest.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ class SentryCacheWrapperTest {
2222

2323
private lateinit var scopes: IScopes
2424
private lateinit var delegate: Cache
25+
private lateinit var options: SentryOptions
2526

2627
@BeforeTest
2728
fun setup() {
2829
scopes = mock()
2930
delegate = mock()
30-
whenever(scopes.options).thenReturn(SentryOptions())
31+
options = SentryOptions().apply { isEnableCacheTracing = true }
32+
whenever(scopes.options).thenReturn(options)
3133
whenever(delegate.name).thenReturn("testCache")
3234
}
3335

@@ -223,6 +225,21 @@ class SentryCacheWrapperTest {
223225
verify(delegate).get("myKey")
224226
}
225227

228+
// -- no span when option is disabled --
229+
230+
@Test
231+
fun `does not create span when enableCacheTracing is false`() {
232+
options.isEnableCacheTracing = false
233+
val tx = createTransaction()
234+
val wrapper = SentryCacheWrapper(delegate, scopes)
235+
whenever(delegate.get("myKey")).thenReturn(null)
236+
237+
wrapper.get("myKey")
238+
239+
verify(delegate).get("myKey")
240+
assertEquals(0, tx.spans.size)
241+
}
242+
226243
// -- error handling --
227244

228245
@Test

sentry/api/sentry.api

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ public final class io/sentry/ExternalOptions {
518518
public fun getTracesSampleRate ()Ljava/lang/Double;
519519
public fun isCaptureOpenTelemetryEvents ()Ljava/lang/Boolean;
520520
public fun isEnableBackpressureHandling ()Ljava/lang/Boolean;
521+
public fun isEnableCacheTracing ()Ljava/lang/Boolean;
521522
public fun isEnableDatabaseTransactionTracing ()Ljava/lang/Boolean;
522523
public fun isEnableLogs ()Ljava/lang/Boolean;
523524
public fun isEnableMetrics ()Ljava/lang/Boolean;
@@ -534,6 +535,7 @@ public final class io/sentry/ExternalOptions {
534535
public fun setDist (Ljava/lang/String;)V
535536
public fun setDsn (Ljava/lang/String;)V
536537
public fun setEnableBackpressureHandling (Ljava/lang/Boolean;)V
538+
public fun setEnableCacheTracing (Ljava/lang/Boolean;)V
537539
public fun setEnableDatabaseTransactionTracing (Ljava/lang/Boolean;)V
538540
public fun setEnableDeduplication (Ljava/lang/Boolean;)V
539541
public fun setEnableLogs (Ljava/lang/Boolean;)V
@@ -3656,6 +3658,7 @@ public class io/sentry/SentryOptions {
36563658
public fun isEnableAppStartProfiling ()Z
36573659
public fun isEnableAutoSessionTracking ()Z
36583660
public fun isEnableBackpressureHandling ()Z
3661+
public fun isEnableCacheTracing ()Z
36593662
public fun isEnableDatabaseTransactionTracing ()Z
36603663
public fun isEnableDeduplication ()Z
36613664
public fun isEnableEventSizeLimiting ()Z
@@ -3714,6 +3717,7 @@ public class io/sentry/SentryOptions {
37143717
public fun setEnableAppStartProfiling (Z)V
37153718
public fun setEnableAutoSessionTracking (Z)V
37163719
public fun setEnableBackpressureHandling (Z)V
3720+
public fun setEnableCacheTracing (Z)V
37173721
public fun setEnableDatabaseTransactionTracing (Z)V
37183722
public fun setEnableDeduplication (Z)V
37193723
public fun setEnableEventSizeLimiting (Z)V

sentry/src/main/java/io/sentry/ExternalOptions.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public final class ExternalOptions {
5555
private @Nullable Boolean sendDefaultPii;
5656
private @Nullable Boolean enableBackpressureHandling;
5757
private @Nullable Boolean enableDatabaseTransactionTracing;
58+
private @Nullable Boolean enableCacheTracing;
5859
private @Nullable Boolean globalHubMode;
5960
private @Nullable Boolean forceInit;
6061
private @Nullable Boolean captureOpenTelemetryEvents;
@@ -157,6 +158,8 @@ public final class ExternalOptions {
157158
options.setEnableDatabaseTransactionTracing(
158159
propertiesProvider.getBooleanProperty("enable-database-transaction-tracing"));
159160

161+
options.setEnableCacheTracing(propertiesProvider.getBooleanProperty("enable-cache-tracing"));
162+
160163
options.setGlobalHubMode(propertiesProvider.getBooleanProperty("global-hub-mode"));
161164

162165
options.setCaptureOpenTelemetryEvents(
@@ -502,6 +505,14 @@ public void setEnableDatabaseTransactionTracing(
502505
return enableDatabaseTransactionTracing;
503506
}
504507

508+
public void setEnableCacheTracing(final @Nullable Boolean enableCacheTracing) {
509+
this.enableCacheTracing = enableCacheTracing;
510+
}
511+
512+
public @Nullable Boolean isEnableCacheTracing() {
513+
return enableCacheTracing;
514+
}
515+
505516
public void setGlobalHubMode(final @Nullable Boolean globalHubMode) {
506517
this.globalHubMode = globalHubMode;
507518
}

sentry/src/main/java/io/sentry/SentryOptions.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,9 @@ public class SentryOptions {
490490
/** Whether database transaction spans (BEGIN, COMMIT, ROLLBACK) should be traced. */
491491
private boolean enableDatabaseTransactionTracing = false;
492492

493+
/** Whether cache operations (get, put, evict, clear) should be traced. */
494+
private boolean enableCacheTracing = false;
495+
493496
/** Date provider to retrieve the current date from. */
494497
@ApiStatus.Internal
495498
private final @NotNull LazyEvaluator<SentryDateProvider> dateProvider =
@@ -2630,6 +2633,24 @@ public void setEnableDatabaseTransactionTracing(boolean enableDatabaseTransactio
26302633
this.enableDatabaseTransactionTracing = enableDatabaseTransactionTracing;
26312634
}
26322635

2636+
/**
2637+
* Whether cache operations (get, put, evict, clear) should be traced.
2638+
*
2639+
* @return true if cache operations should be traced
2640+
*/
2641+
public boolean isEnableCacheTracing() {
2642+
return enableCacheTracing;
2643+
}
2644+
2645+
/**
2646+
* Whether cache operations (get, put, evict, clear) should be traced.
2647+
*
2648+
* @param enableCacheTracing true if cache operations should be traced
2649+
*/
2650+
public void setEnableCacheTracing(boolean enableCacheTracing) {
2651+
this.enableCacheTracing = enableCacheTracing;
2652+
}
2653+
26332654
/**
26342655
* Whether Sentry is enabled.
26352656
*
@@ -3462,6 +3483,9 @@ public void merge(final @NotNull ExternalOptions options) {
34623483
if (options.isEnableDatabaseTransactionTracing() != null) {
34633484
setEnableDatabaseTransactionTracing(options.isEnableDatabaseTransactionTracing());
34643485
}
3486+
if (options.isEnableCacheTracing() != null) {
3487+
setEnableCacheTracing(options.isEnableCacheTracing());
3488+
}
34653489
if (options.getMaxRequestBodySize() != null) {
34663490
setMaxRequestBodySize(options.getMaxRequestBodySize());
34673491
}

sentry/src/test/java/io/sentry/ExternalOptionsTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,20 @@ class ExternalOptionsTest {
317317
}
318318
}
319319

320+
@Test
321+
fun `creates options with enableCacheTracing set to true`() {
322+
withPropertiesFile("enable-cache-tracing=true") { options ->
323+
assertTrue(options.isEnableCacheTracing == true)
324+
}
325+
}
326+
327+
@Test
328+
fun `creates options with enableCacheTracing set to false`() {
329+
withPropertiesFile("enable-cache-tracing=false") { options ->
330+
assertTrue(options.isEnableCacheTracing == false)
331+
}
332+
}
333+
320334
@Test
321335
fun `creates options with cron defaults`() {
322336
withPropertiesFile(

sentry/src/test/java/io/sentry/SentryOptionsTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ class SentryOptionsTest {
398398
externalOptions.ignoredErrors = listOf("Some error", "Another .*")
399399
externalOptions.isEnableBackpressureHandling = false
400400
externalOptions.isEnableDatabaseTransactionTracing = true
401+
externalOptions.isEnableCacheTracing = true
401402
externalOptions.maxRequestBodySize = SentryOptions.RequestSize.MEDIUM
402403
externalOptions.isSendDefaultPii = true
403404
externalOptions.isForceInit = true
@@ -461,6 +462,7 @@ class SentryOptionsTest {
461462
)
462463
assertFalse(options.isEnableBackpressureHandling)
463464
assertTrue(options.isEnableDatabaseTransactionTracing)
465+
assertTrue(options.isEnableCacheTracing)
464466
assertTrue(options.isForceInit)
465467
assertNotNull(options.cron)
466468
assertEquals(10L, options.cron?.defaultCheckinMargin)
@@ -697,6 +699,11 @@ class SentryOptionsTest {
697699
assertFalse(SentryOptions().isEnableDatabaseTransactionTracing)
698700
}
699701

702+
@Test
703+
fun `when options are initialized, enableCacheTracing is set to false by default`() {
704+
assertFalse(SentryOptions().isEnableCacheTracing)
705+
}
706+
700707
@Test
701708
fun `when options are initialized, metrics is enabled by default`() {
702709
assertTrue(SentryOptions().metrics.isEnabled)

0 commit comments

Comments
 (0)