diff --git a/src/main/java/org/redisson/command/CommandAsyncService.java b/src/main/java/org/redisson/command/CommandAsyncService.java index d0b2fa106..4a27eb612 100644 --- a/src/main/java/org/redisson/command/CommandAsyncService.java +++ b/src/main/java/org/redisson/command/CommandAsyncService.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -181,10 +182,11 @@ public class CommandAsyncService implements CommandAsyncExecutor { return allAsync(true, command, callback, params); } - public Future allAsync(boolean readOnlyMode, RedisCommand command, final SlotCallback callback, Object ... params) { + private Future allAsync(boolean readOnlyMode, RedisCommand command, final SlotCallback callback, Object ... params) { final Promise mainPromise = connectionManager.newPromise(); + final Set slots = connectionManager.getEntries().keySet(); Promise promise = new DefaultPromise() { - AtomicInteger counter = new AtomicInteger(connectionManager.getEntries().keySet().size()); + AtomicInteger counter = new AtomicInteger(slots.size()); @Override public Promise setSuccess(T result) { if (callback != null) { @@ -206,7 +208,7 @@ public class CommandAsyncService implements CommandAsyncExecutor { return this; } }; - for (ClusterSlotRange slot : connectionManager.getEntries().keySet()) { + for (ClusterSlotRange slot : slots) { async(readOnlyMode, new NodeSource(slot.getStartSlot()), connectionManager.getCodec(), command, params, promise, 0); } return mainPromise;