From 5a729ca90a40bf4fb4506f9de3935d5133b828a5 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Fri, 13 Mar 2026 11:51:27 +0100 Subject: [PATCH] fix(spring): Skip cache span data when child span is NoOp Add span.isNoOp() check after startChild() in all three Spring SentryCacheWrapper variants, matching the existing pattern in SentryJCacheWrapper. This avoids setting span data on noop spans when sampling drops the span. Co-Authored-By: Claude Opus 4.6 --- .../main/java/io/sentry/spring7/cache/SentryCacheWrapper.java | 3 +++ .../io/sentry/spring/jakarta/cache/SentryCacheWrapper.java | 3 +++ .../main/java/io/sentry/spring/cache/SentryCacheWrapper.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/sentry-spring-7/src/main/java/io/sentry/spring7/cache/SentryCacheWrapper.java b/sentry-spring-7/src/main/java/io/sentry/spring7/cache/SentryCacheWrapper.java index 181e9f398d..95d1b3c802 100644 --- a/sentry-spring-7/src/main/java/io/sentry/spring7/cache/SentryCacheWrapper.java +++ b/sentry-spring-7/src/main/java/io/sentry/spring7/cache/SentryCacheWrapper.java @@ -295,6 +295,9 @@ public boolean invalidate() { spanOptions.setOrigin(TRACE_ORIGIN); final String keyString = key != null ? String.valueOf(key) : null; final ISpan span = activeSpan.startChild(operation, keyString, spanOptions); + if (span.isNoOp()) { + return null; + } if (keyString != null) { span.setData(SpanDataConvention.CACHE_KEY_KEY, Arrays.asList(keyString)); } diff --git a/sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/cache/SentryCacheWrapper.java b/sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/cache/SentryCacheWrapper.java index 6253ede412..f9e2d82379 100644 --- a/sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/cache/SentryCacheWrapper.java +++ b/sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/cache/SentryCacheWrapper.java @@ -295,6 +295,9 @@ public boolean invalidate() { spanOptions.setOrigin(TRACE_ORIGIN); final String keyString = key != null ? String.valueOf(key) : null; final ISpan span = activeSpan.startChild(operation, keyString, spanOptions); + if (span.isNoOp()) { + return null; + } if (keyString != null) { span.setData(SpanDataConvention.CACHE_KEY_KEY, Arrays.asList(keyString)); } diff --git a/sentry-spring/src/main/java/io/sentry/spring/cache/SentryCacheWrapper.java b/sentry-spring/src/main/java/io/sentry/spring/cache/SentryCacheWrapper.java index 629cceb715..1d106c9e7c 100644 --- a/sentry-spring/src/main/java/io/sentry/spring/cache/SentryCacheWrapper.java +++ b/sentry-spring/src/main/java/io/sentry/spring/cache/SentryCacheWrapper.java @@ -223,6 +223,9 @@ public boolean invalidate() { spanOptions.setOrigin(TRACE_ORIGIN); final String keyString = key != null ? String.valueOf(key) : null; final ISpan span = activeSpan.startChild(operation, keyString, spanOptions); + if (span.isNoOp()) { + return null; + } if (keyString != null) { span.setData(SpanDataConvention.CACHE_KEY_KEY, Arrays.asList(keyString)); }