diff --git a/src/main/java/org/springframework/data/neo4j/core/transaction/ReactiveDefaultBookmarkManager.java b/src/main/java/org/springframework/data/neo4j/core/transaction/ReactiveDefaultBookmarkManager.java index af74b78a1..7f6f732f8 100644 --- a/src/main/java/org/springframework/data/neo4j/core/transaction/ReactiveDefaultBookmarkManager.java +++ b/src/main/java/org/springframework/data/neo4j/core/transaction/ReactiveDefaultBookmarkManager.java @@ -36,7 +36,7 @@ import org.springframework.lang.Nullable; */ final class ReactiveDefaultBookmarkManager extends AbstractBookmarkManager { - private final Set bookmarks = Collections.synchronizedSet(new HashSet<>()); + private final Set bookmarks = new HashSet<>(); private final Supplier> bookmarksSupplier; @@ -49,14 +49,18 @@ final class ReactiveDefaultBookmarkManager extends AbstractBookmarkManager { @Override public Collection getBookmarks() { - this.bookmarks.addAll(bookmarksSupplier.get()); - return Set.copyOf(this.bookmarks); + synchronized (this.bookmarks) { + this.bookmarks.addAll(bookmarksSupplier.get()); + return Set.copyOf(this.bookmarks); + } } @Override public void updateBookmarks(Collection usedBookmarks, Collection newBookmarks) { - bookmarks.removeAll(usedBookmarks); - newBookmarks.stream().filter(Objects::nonNull).forEach(bookmarks::add); + synchronized (this.bookmarks) { + usedBookmarks.stream().filter(Objects::nonNull).forEach(bookmarks::remove); + newBookmarks.stream().filter(Objects::nonNull).forEach(bookmarks::add); + } if (applicationEventPublisher != null) { applicationEventPublisher.publishEvent(new Neo4jBookmarksUpdatedEvent(new HashSet<>(bookmarks))); }