diff --git a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java index a82d62ea5..e2e6fa951 100644 --- a/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/ReplicatedConnectionManager.java @@ -75,6 +75,7 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { throw new IllegalArgumentException("At least one Redis node should be defined!"); } + Exception ex = null; for (String address : cfg.getNodeAddresses()) { RedisURI addr = new RedisURI(address); CompletionStage connectionFuture = connectToNode(cfg, addr, addr.getHost()); @@ -82,7 +83,11 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { try { connection = connectionFuture.toCompletableFuture().join(); } catch (Exception e) { - // skip + if (ex != null) { + ex.addSuppressed(e); + } else { + ex = e; + } } if (connection == null) { continue; @@ -101,7 +106,7 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager { if (currentMaster.get() == null) { internalShutdown(); - throw new RedisConnectionException("Can't connect to servers!"); + throw new RedisConnectionException("Can't connect to servers!", ex); } if (this.config.getReadMode() != ReadMode.MASTER && this.config.getSlaveAddresses().isEmpty()) { log.warn("ReadMode = {}, but slave nodes are not found! Please specify all nodes in replicated mode.", this.config.getReadMode());