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 181e9f398da..95d1b3c8025 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 6253ede412e..f9e2d823798 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 629cceb7159..1d106c9e7c9 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)); }