From 9c22c6802476dbdf2229a12ce54d0c1fa0c47e1e Mon Sep 17 00:00:00 2001 From: Dmitriy Tverdiakov Date: Mon, 13 Jan 2025 12:48:30 +0000 Subject: [PATCH] Fix thread safety in Neo4jBookmarkManager --- .../org/neo4j/driver/internal/Neo4jBookmarkManager.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java b/driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java index 4b6a8384db..85a7e5110c 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java +++ b/driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java @@ -58,7 +58,7 @@ public void updateBookmarks(Set previousBookmarks, Set newBo var immutableBookmarks = executeWithLock(rwLock.writeLock(), () -> { this.bookmarks.removeAll(previousBookmarks); this.bookmarks.addAll(newBookmarks); - return Collections.unmodifiableSet(this.bookmarks); + return Collections.unmodifiableSet(new HashSet<>(this.bookmarks)); }); if (updateListener != null) { updateListener.accept(immutableBookmarks); @@ -67,12 +67,10 @@ public void updateBookmarks(Set previousBookmarks, Set newBo @Override public Set getBookmarks() { - var immutableBookmarks = executeWithLock(rwLock.readLock(), () -> Collections.unmodifiableSet(this.bookmarks)); + var bookmarks = executeWithLock(rwLock.readLock(), () -> new HashSet<>(this.bookmarks)); if (bookmarksSupplier != null) { - var bookmarks = new HashSet<>(immutableBookmarks); bookmarks.addAll(bookmarksSupplier.get()); - immutableBookmarks = Collections.unmodifiableSet(bookmarks); } - return immutableBookmarks; + return Collections.unmodifiableSet(bookmarks); } }