Skip to content

Commit c173c02

Browse files
authored
Fix thread safety in Neo4jBookmarkManager (#1604)
1 parent 743091e commit c173c02

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

driver/src/main/java/org/neo4j/driver/internal/Neo4jBookmarkManager.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void updateBookmarks(Set<Bookmark> previousBookmarks, Set<Bookmark> newBo
5858
var immutableBookmarks = executeWithLock(rwLock.writeLock(), () -> {
5959
this.bookmarks.removeAll(previousBookmarks);
6060
this.bookmarks.addAll(newBookmarks);
61-
return Collections.unmodifiableSet(this.bookmarks);
61+
return Collections.unmodifiableSet(new HashSet<>(this.bookmarks));
6262
});
6363
if (updateListener != null) {
6464
updateListener.accept(immutableBookmarks);
@@ -67,12 +67,10 @@ public void updateBookmarks(Set<Bookmark> previousBookmarks, Set<Bookmark> newBo
6767

6868
@Override
6969
public Set<Bookmark> getBookmarks() {
70-
var immutableBookmarks = executeWithLock(rwLock.readLock(), () -> Collections.unmodifiableSet(this.bookmarks));
70+
var bookmarks = executeWithLock(rwLock.readLock(), () -> new HashSet<>(this.bookmarks));
7171
if (bookmarksSupplier != null) {
72-
var bookmarks = new HashSet<>(immutableBookmarks);
7372
bookmarks.addAll(bookmarksSupplier.get());
74-
immutableBookmarks = Collections.unmodifiableSet(bookmarks);
7573
}
76-
return immutableBookmarks;
74+
return Collections.unmodifiableSet(bookmarks);
7775
}
7876
}

0 commit comments

Comments
 (0)