Skip to content

Commit 00e75e5

Browse files
authored
Merge 5e081fc into da5bde0
2 parents da5bde0 + 5e081fc commit 00e75e5

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
@@ -210,6 +210,10 @@ public boolean invalidate() {
210210
}
211211

212212
private @Nullable ISpan startSpan(final @NotNull String operation, final @Nullable Object key) {
213+
if (!scopes.getOptions().isEnableCacheTracing()) {
214+
return null;
215+
}
216+
213217
final ISpan activeSpan = scopes.getSpan();
214218
if (activeSpan == null || activeSpan.isNoOp()) {
215219
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
@@ -24,12 +24,14 @@ class SentryCacheWrapperTest {
2424

2525
private lateinit var scopes: IScopes
2626
private lateinit var delegate: Cache
27+
private lateinit var options: SentryOptions
2728

2829
@BeforeTest
2930
fun setup() {
3031
scopes = mock()
3132
delegate = mock()
32-
whenever(scopes.options).thenReturn(SentryOptions())
33+
options = SentryOptions().apply { isEnableCacheTracing = true }
34+
whenever(scopes.options).thenReturn(options)
3335
whenever(delegate.name).thenReturn("testCache")
3436
}
3537

@@ -242,6 +244,21 @@ class SentryCacheWrapperTest {
242244
verify(delegate).get("myKey")
243245
}
244246

247+
// -- no span when option is disabled --
248+
249+
@Test
250+
fun `does not create span when enableCacheTracing is false`() {
251+
options.isEnableCacheTracing = false
252+
val tx = createTransaction()
253+
val wrapper = SentryCacheWrapper(delegate, scopes)
254+
whenever(delegate.get("myKey")).thenReturn(null)
255+
256+
wrapper.get("myKey")
257+
258+
verify(delegate).get("myKey")
259+
assertEquals(0, tx.spans.size)
260+
}
261+
245262
// -- error handling --
246263

247264
@Test

sentry/api/sentry.api

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ public final class io/sentry/ExternalOptions {
520520
public fun getTracesSampleRate ()Ljava/lang/Double;
521521
public fun isCaptureOpenTelemetryEvents ()Ljava/lang/Boolean;
522522
public fun isEnableBackpressureHandling ()Ljava/lang/Boolean;
523+
public fun isEnableCacheTracing ()Ljava/lang/Boolean;
523524
public fun isEnableDatabaseTransactionTracing ()Ljava/lang/Boolean;
524525
public fun isEnableLogs ()Ljava/lang/Boolean;
525526
public fun isEnableMetrics ()Ljava/lang/Boolean;
@@ -536,6 +537,7 @@ public final class io/sentry/ExternalOptions {
536537
public fun setDist (Ljava/lang/String;)V
537538
public fun setDsn (Ljava/lang/String;)V
538539
public fun setEnableBackpressureHandling (Ljava/lang/Boolean;)V
540+
public fun setEnableCacheTracing (Ljava/lang/Boolean;)V
539541
public fun setEnableDatabaseTransactionTracing (Ljava/lang/Boolean;)V
540542
public fun setEnableDeduplication (Ljava/lang/Boolean;)V
541543
public fun setEnableLogs (Ljava/lang/Boolean;)V
@@ -3660,6 +3662,7 @@ public class io/sentry/SentryOptions {
36603662
public fun isEnableAppStartProfiling ()Z
36613663
public fun isEnableAutoSessionTracking ()Z
36623664
public fun isEnableBackpressureHandling ()Z
3665+
public fun isEnableCacheTracing ()Z
36633666
public fun isEnableDatabaseTransactionTracing ()Z
36643667
public fun isEnableDeduplication ()Z
36653668
public fun isEnableEventSizeLimiting ()Z
@@ -3718,6 +3721,7 @@ public class io/sentry/SentryOptions {
37183721
public fun setEnableAppStartProfiling (Z)V
37193722
public fun setEnableAutoSessionTracking (Z)V
37203723
public fun setEnableBackpressureHandling (Z)V
3724+
public fun setEnableCacheTracing (Z)V
37213725
public fun setEnableDatabaseTransactionTracing (Z)V
37223726
public fun setEnableDeduplication (Z)V
37233727
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
@@ -57,6 +57,7 @@ public final class ExternalOptions {
5757
private @Nullable Boolean sendDefaultPii;
5858
private @Nullable Boolean enableBackpressureHandling;
5959
private @Nullable Boolean enableDatabaseTransactionTracing;
60+
private @Nullable Boolean enableCacheTracing;
6061
private @Nullable Boolean globalHubMode;
6162
private @Nullable Boolean forceInit;
6263
private @Nullable Boolean captureOpenTelemetryEvents;
@@ -162,6 +163,8 @@ public final class ExternalOptions {
162163
options.setEnableDatabaseTransactionTracing(
163164
propertiesProvider.getBooleanProperty("enable-database-transaction-tracing"));
164165

166+
options.setEnableCacheTracing(propertiesProvider.getBooleanProperty("enable-cache-tracing"));
167+
165168
options.setGlobalHubMode(propertiesProvider.getBooleanProperty("global-hub-mode"));
166169

167170
options.setCaptureOpenTelemetryEvents(
@@ -523,6 +526,14 @@ public void setEnableDatabaseTransactionTracing(
523526
return enableDatabaseTransactionTracing;
524527
}
525528

529+
public void setEnableCacheTracing(final @Nullable Boolean enableCacheTracing) {
530+
this.enableCacheTracing = enableCacheTracing;
531+
}
532+
533+
public @Nullable Boolean isEnableCacheTracing() {
534+
return enableCacheTracing;
535+
}
536+
526537
public void setGlobalHubMode(final @Nullable Boolean globalHubMode) {
527538
this.globalHubMode = globalHubMode;
528539
}

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
*
@@ -3468,6 +3489,9 @@ public void merge(final @NotNull ExternalOptions options) {
34683489
if (options.isEnableDatabaseTransactionTracing() != null) {
34693490
setEnableDatabaseTransactionTracing(options.isEnableDatabaseTransactionTracing());
34703491
}
3492+
if (options.isEnableCacheTracing() != null) {
3493+
setEnableCacheTracing(options.isEnableCacheTracing());
3494+
}
34713495
if (options.getMaxRequestBodySize() != null) {
34723496
setMaxRequestBodySize(options.getMaxRequestBodySize());
34733497
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,20 @@ class ExternalOptionsTest {
331331
}
332332
}
333333

334+
@Test
335+
fun `creates options with enableCacheTracing set to true`() {
336+
withPropertiesFile("enable-cache-tracing=true") { options ->
337+
assertTrue(options.isEnableCacheTracing == true)
338+
}
339+
}
340+
341+
@Test
342+
fun `creates options with enableCacheTracing set to false`() {
343+
withPropertiesFile("enable-cache-tracing=false") { options ->
344+
assertTrue(options.isEnableCacheTracing == false)
345+
}
346+
}
347+
334348
@Test
335349
fun `creates options with cron defaults`() {
336350
withPropertiesFile(

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ class SentryOptionsTest {
400400
externalOptions.ignoredErrors = listOf("Some error", "Another .*")
401401
externalOptions.isEnableBackpressureHandling = false
402402
externalOptions.isEnableDatabaseTransactionTracing = true
403+
externalOptions.isEnableCacheTracing = true
403404
externalOptions.maxRequestBodySize = SentryOptions.RequestSize.MEDIUM
404405
externalOptions.isSendDefaultPii = true
405406
externalOptions.isForceInit = true
@@ -465,6 +466,7 @@ class SentryOptionsTest {
465466
)
466467
assertFalse(options.isEnableBackpressureHandling)
467468
assertTrue(options.isEnableDatabaseTransactionTracing)
469+
assertTrue(options.isEnableCacheTracing)
468470
assertTrue(options.isForceInit)
469471
assertNotNull(options.cron)
470472
assertEquals(10L, options.cron?.defaultCheckinMargin)
@@ -701,6 +703,11 @@ class SentryOptionsTest {
701703
assertFalse(SentryOptions().isEnableDatabaseTransactionTracing)
702704
}
703705

706+
@Test
707+
fun `when options are initialized, enableCacheTracing is set to false by default`() {
708+
assertFalse(SentryOptions().isEnableCacheTracing)
709+
}
710+
704711
@Test
705712
fun `when options are initialized, metrics is enabled by default`() {
706713
assertTrue(SentryOptions().metrics.isEnabled)

0 commit comments

Comments
 (0)