From 3135be917845edd4f8aefb710a0bb1beb1382c89 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 5 Dec 2025 12:14:07 +0100 Subject: [PATCH] fix logic in notificationManager Signed-off-by: Armin Schrenk --- .../java/org/cryptomator/event/NotificationManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/event/NotificationManager.java b/src/main/java/org/cryptomator/event/NotificationManager.java index 122758c7b..e9e8e99d7 100644 --- a/src/main/java/org/cryptomator/event/NotificationManager.java +++ b/src/main/java/org/cryptomator/event/NotificationManager.java @@ -11,6 +11,7 @@ import java.nio.file.Path; import java.time.Duration; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicBoolean; /** * Manager for notifications. @@ -53,13 +54,15 @@ public class NotificationManager { boolean addEvent(Vault v, Path keyPath, FilesystemEvent e) { var key = new FSEventBucket(v, keyPath, e.getClass()); - var cachedElement = eventCache.get(key, _ -> { + var isAdded = new AtomicBoolean(false); + eventCache.asMap().computeIfAbsent(key, _ -> { synchronized (this) { eventsRequiringNotification.add(new VaultEvent(v, e)); + isAdded.set(true); } return e; }); - return cachedElement != e; + return isAdded.get(); } /**