From a103464029497950c7c9854cf09660a7d8292004 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:10:34 +0600 Subject: [PATCH 1/8] refactor: make scope breadcrumb clearing explicit Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- sentry/src/main/java/io/sentry/IScopeObserver.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sentry/src/main/java/io/sentry/IScopeObserver.java b/sentry/src/main/java/io/sentry/IScopeObserver.java index b6210c88701..a27a001a969 100644 --- a/sentry/src/main/java/io/sentry/IScopeObserver.java +++ b/sentry/src/main/java/io/sentry/IScopeObserver.java @@ -10,15 +10,14 @@ import org.jetbrains.annotations.Nullable; /** - * A Scope observer that tracks changes on Scope. All methods are "default", so implementors can - * subscribe to only those properties, that they are interested in. + * A Scope observer that tracks changes on Scope. */ public interface IScopeObserver { void setUser(@Nullable User user); void addBreadcrumb(@NotNull Breadcrumb crumb); - void setBreadcrumbs(@NotNull Collection breadcrumbs); + void clearBreadcrumbs(); void setTag(@NotNull String key, @NotNull String value); From 77da18e6e29c8b983571d6d737d6ca50d3eb6e23 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:10:37 +0600 Subject: [PATCH 2/8] refactor: make scope breadcrumb clearing explicit Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- sentry/src/main/java/io/sentry/ScopeObserverAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java b/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java index e80d8b6b208..d6b2f28715f 100644 --- a/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java +++ b/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java @@ -17,7 +17,7 @@ public void setUser(@Nullable User user) {} public void addBreadcrumb(@NotNull Breadcrumb crumb) {} @Override - public void setBreadcrumbs(@NotNull Collection breadcrumbs) {} + public void clearBreadcrumbs() {} @Override public void setTag(@NotNull String key, @NotNull String value) {} From 4b12e2142a49e9eb0016cff0117c1e4acf120e2a Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:10:42 +0600 Subject: [PATCH 3/8] refactor: make scope breadcrumb clearing explicit Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- sentry/src/main/java/io/sentry/Scope.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sentry/src/main/java/io/sentry/Scope.java b/sentry/src/main/java/io/sentry/Scope.java index f4ba9dbbb9c..7638f9a909b 100644 --- a/sentry/src/main/java/io/sentry/Scope.java +++ b/sentry/src/main/java/io/sentry/Scope.java @@ -534,7 +534,6 @@ public void addBreadcrumb(@NotNull Breadcrumb breadcrumb, @Nullable Hint hint) { for (final IScopeObserver observer : options.getScopeObservers()) { observer.addBreadcrumb(breadcrumb); - observer.setBreadcrumbs(breadcrumbs); } } else { options.getLogger().log(SentryLevel.INFO, "Breadcrumb was dropped by beforeBreadcrumb"); @@ -558,7 +557,7 @@ public void clearBreadcrumbs() { breadcrumbs.clear(); for (final IScopeObserver observer : options.getScopeObservers()) { - observer.setBreadcrumbs(breadcrumbs); + observer.clearBreadcrumbs(); } } From 1c1d4e8fe3c0773813d8db5338583ebe1ca87ddc Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:10:45 +0600 Subject: [PATCH 4/8] refactor: make scope breadcrumb clearing explicit Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- .../io/sentry/cache/PersistingScopeObserver.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java b/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java index 756f36f65da..4ccc03110cd 100644 --- a/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java +++ b/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java @@ -153,16 +153,12 @@ public void addBreadcrumb(@NotNull Breadcrumb crumb) { } @Override - public void setBreadcrumbs(@NotNull Collection breadcrumbs) { - if (breadcrumbs.isEmpty()) { - // we only clear the queue if the new collection is empty (someone called clearBreadcrumbs) - // If it's not empty, we'd add breadcrumbs one-by-one in the method above - if (!options.isEnableScopePersistence()) { - return; - } - pendingBreadcrumbs.offer(CLEAR_MARKER); - requestFlush(); + public void clearBreadcrumbs() { + if (!options.isEnableScopePersistence()) { + return; } + pendingBreadcrumbs.offer(CLEAR_MARKER); + requestFlush(); } @Override From 2e2d79ad5aa0f4842157e2c64749ca5accd8f558 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:11:03 +0600 Subject: [PATCH 5/8] test: update scope observer breadcrumb expectations Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- sentry/src/test/java/io/sentry/ScopeTest.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sentry/src/test/java/io/sentry/ScopeTest.kt b/sentry/src/test/java/io/sentry/ScopeTest.kt index 3fb19078c27..f339ce99762 100644 --- a/sentry/src/test/java/io/sentry/ScopeTest.kt +++ b/sentry/src/test/java/io/sentry/ScopeTest.kt @@ -761,12 +761,10 @@ class ScopeTest { val breadcrumb = Breadcrumb() scope.addBreadcrumb(breadcrumb) verify(observer).addBreadcrumb(eq(breadcrumb)) - verify(observer).setBreadcrumbs(argThat { elementAt(0) == breadcrumb }) scope.addBreadcrumb(Breadcrumb.debug("test")) verify(observer).addBreadcrumb(argThat { message == "test" }) - verify(observer, times(2)) - .setBreadcrumbs(argThat { elementAt(0) == breadcrumb && elementAt(1).message == "test" }) + verify(observer, never()).clearBreadcrumbs() } @Test @@ -780,7 +778,7 @@ class ScopeTest { assertFalse(scope.breadcrumbs.isEmpty()) scope.clearBreadcrumbs() - verify(observer, times(2)).setBreadcrumbs(argThat { isEmpty() }) + verify(observer).clearBreadcrumbs() } @Test From 04e6790ca9abfc25bd5bcab89fcce1081911a833 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:11:06 +0600 Subject: [PATCH 6/8] test: update scope observer breadcrumb expectations Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- .../test/java/io/sentry/cache/PersistingScopeObserverTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt index b98c5b8a319..9fdc8bf1a71 100644 --- a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt +++ b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt @@ -123,7 +123,7 @@ class PersistingScopeObserverTest( breadcrumbs.forEach { addBreadcrumb(it) } }, BREADCRUMBS_FILENAME, - DeleteScopeValue { setBreadcrumbs(emptyList()) }, + DeleteScopeValue { clearBreadcrumbs() }, DeletedEntityProvider { emptyList() }, ) @@ -141,7 +141,7 @@ class PersistingScopeObserverTest( ) }, BREADCRUMBS_FILENAME, - DeleteScopeValue { setBreadcrumbs(emptyList()) }, + DeleteScopeValue { clearBreadcrumbs() }, DeletedEntityProvider { emptyList() }, ) From 8cb602111a951fb14196aa49b6e2ddb80746e6b4 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:11:09 +0600 Subject: [PATCH 7/8] test: update scope observer breadcrumb expectations Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- .../io/sentry/cache/PersistingScopeObserverBatchingTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt index d893e52d4ce..17db28585ae 100644 --- a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt +++ b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt @@ -81,7 +81,7 @@ class PersistingScopeObserverBatchingTest { val sut = getSut(executor) sut.addBreadcrumb(Breadcrumb().apply { message = "dropped" }) - sut.setBreadcrumbs(emptyList()) + sut.clearBreadcrumbs() sut.addBreadcrumb(Breadcrumb().apply { message = "kept" }) executor.runAll() @@ -95,7 +95,7 @@ class PersistingScopeObserverBatchingTest { // fires while the flush is draining, i.e. after the first breadcrumb has been written options.setSerializer( SerializerHook(options.serializer) { - sut.setBreadcrumbs(emptyList()) + sut.clearBreadcrumbs() sut.addBreadcrumb(Breadcrumb().apply { message = "kept" }) } ) From 5a605101090a9ab75250060f14cdec4ead549878 Mon Sep 17 00:00:00 2001 From: "Md. Nazmus Salahin Rocky" Date: Sat, 31 Oct 2026 19:11:14 +0600 Subject: [PATCH 8/8] test: update scope observer breadcrumb expectations Refs getsentry/sentry-java#5844 Signed-off-by: Md. Nazmus Salahin Rocky --- sentry/api/sentry.api | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 6e1ebe4ff30..3a3dfc8d110 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -1067,7 +1067,7 @@ public abstract interface class io/sentry/IScopeObserver { public abstract fun clearAttachments ()V public abstract fun removeExtra (Ljava/lang/String;)V public abstract fun removeTag (Ljava/lang/String;)V - public abstract fun setBreadcrumbs (Ljava/util/Collection;)V + public abstract fun clearBreadcrumbs ()V public abstract fun setContexts (Lio/sentry/protocol/Contexts;)V public abstract fun setEnvironment (Ljava/lang/String;)V public abstract fun setExtra (Ljava/lang/String;Ljava/lang/String;)V @@ -2646,7 +2646,7 @@ public abstract class io/sentry/ScopeObserverAdapter : io/sentry/IScopeObserver public fun clearAttachments ()V public fun removeExtra (Ljava/lang/String;)V public fun removeTag (Ljava/lang/String;)V - public fun setBreadcrumbs (Ljava/util/Collection;)V + public fun clearBreadcrumbs ()V public fun setContexts (Lio/sentry/protocol/Contexts;)V public fun setEnvironment (Ljava/lang/String;)V public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V