This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 113d40ac50 Change callbacks in CleanupLedgerManager as a Set (#4123)
113d40ac50 is described below

commit 113d40ac5057709b3e44b9281231456b4ef81065
Author: houxiaoyu <houxia...@apache.org>
AuthorDate: Fri Jan 12 01:21:41 2024 +0800

    Change callbacks in CleanupLedgerManager as a Set (#4123)
---
 .../apache/bookkeeper/meta/CleanupLedgerManager.java  | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
index 669304c1c1..bc4cefe6fc 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
@@ -23,7 +23,6 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.bookkeeper.client.BKException;
@@ -55,7 +54,7 @@ public class CleanupLedgerManager implements LedgerManager {
         public void operationComplete(int rc, T result) {
             closeLock.readLock().lock();
             try {
-                if (!closed && null != removeCallback(cb)) {
+                if (!closed && removeCallback(cb)) {
                     cb.operationComplete(rc, result);
                 }
             } finally {
@@ -78,8 +77,7 @@ public class CleanupLedgerManager implements LedgerManager {
     }
 
     private final LedgerManager underlying;
-    private final ConcurrentMap<GenericCallback, GenericCallback> callbacks =
-        new ConcurrentHashMap<GenericCallback, GenericCallback>();
+    private final Set<GenericCallback> callbacks = 
ConcurrentHashMap.newKeySet();
     private boolean closed = false;
     private final ReentrantReadWriteLock closeLock = new 
ReentrantReadWriteLock();
     private final Set<CompletableFuture<?>> futures = 
ConcurrentHashMap.newKeySet();
@@ -94,7 +92,7 @@ public class CleanupLedgerManager implements LedgerManager {
     }
 
     private void addCallback(GenericCallback callback) {
-        callbacks.put(callback, callback);
+        callbacks.add(callback);
     }
 
     @Override
@@ -107,7 +105,7 @@ public class CleanupLedgerManager implements LedgerManager {
         underlying.unregisterLedgerMetadataListener(ledgerId, listener);
     }
 
-    private GenericCallback removeCallback(GenericCallback callback) {
+    private boolean removeCallback(GenericCallback callback) {
         return callbacks.remove(callback);
     }
 
@@ -206,7 +204,7 @@ public class CleanupLedgerManager implements LedgerManager {
             underlying.asyncProcessLedgers(processor, new 
AsyncCallback.VoidCallback() {
                 @Override
                 public void processResult(int rc, String path, Object ctx) {
-                    if (null != removeCallback(stub)) {
+                    if (removeCallback(stub)) {
                         finalCb.processResult(rc, path, ctx);
                     }
                 }
@@ -239,14 +237,13 @@ public class CleanupLedgerManager implements 
LedgerManager {
                 return;
             }
             closed = true;
-            keys = new HashSet<GenericCallback>(callbacks.keySet());
+            keys = new HashSet<>(callbacks);
         } finally {
             closeLock.writeLock().unlock();
         }
         for (GenericCallback key : keys) {
-            GenericCallback callback = callbacks.remove(key);
-            if (null != callback) {
-                
callback.operationComplete(BKException.Code.ClientClosedException, null);
+            if (callbacks.remove(key)) {
+                key.operationComplete(BKException.Code.ClientClosedException, 
null);
             }
         }
         BKException exception = new BKException.BKClientClosedException();

Reply via email to