diff --git a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index 1250429c7d70df59da11c2fe1baf86934026dccd..425d85bbc5735bd7dc3bbb3223268c7d17ab4741 100644 --- a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -313,11 +313,16 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { if (!config.checkSkipSlavesInit()) { List> fs = entry.initSlaveBalancer(partition.getFailedSlaveAddresses(), masterClient); AtomicInteger counter = new AtomicInteger(fs.size()); + AtomicInteger errorCounter = new AtomicInteger(fs.size()); for (RFuture future : fs) { future.onComplete((r, ex) -> { if (ex != null) { log.error("unable to add slave for: " + partition.getMasterAddress() + " slot ranges: " + partition.getSlotRanges(), ex); + if (errorCounter.decrementAndGet() == 0) { + result.tryFailure(ex); + return; + } } if (counter.decrementAndGet() == 0) {