diff --git a/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java b/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java index b50ea851f..5aa20bc6e 100644 --- a/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java +++ b/redisson/src/main/java/org/redisson/connection/balancer/LoadBalancerManager.java @@ -38,10 +38,7 @@ import org.redisson.connection.ConnectionManager; import org.redisson.connection.MasterSlaveEntry; import org.redisson.connection.pool.PubSubConnectionPool; import org.redisson.connection.pool.SlaveConnectionPool; -import org.redisson.misc.CountableListener; -import org.redisson.misc.RPromise; -import org.redisson.misc.RedisURI; -import org.redisson.misc.RedissonPromise; +import org.redisson.misc.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,19 +139,18 @@ public class LoadBalancerManager { || entry.getFreezeReason() == FreezeReason.RECONNECT) { if (!entry.isInitialized()) { entry.setInitialized(true); - CountableListener listener = new CountableListener() { - @Override - protected void onSuccess(Void value) { - entry.setFreezeReason(null); - } - }; - listener.setCounter(2); + + AsyncCountDownLatch latch = new AsyncCountDownLatch(); + latch.latch(() -> { + entry.setFreezeReason(null); + }, 2); + BiConsumer initCallBack = new BiConsumer() { - private AtomicBoolean initConnError = new AtomicBoolean(false); + private final AtomicBoolean initConnError = new AtomicBoolean(false); @Override public void accept(Void r, Throwable ex) { if (ex == null) { - listener.decCounter(); + latch.countDown(); } else { if (!initConnError.compareAndSet(false, true)) { return;