diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index 02b7c1dc2..74e96b976 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -511,9 +511,27 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { return; } - sentinels.putIfAbsent(addr, client); - log.info("sentinel: {} added", addr); - result.trySuccess(null); + RFuture f = client.connectAsync(); + f.onComplete((connection, ex) -> { + if (ex != null) { + result.tryFailure(ex); + return; + } + + RFuture r = connection.async(config.getTimeout(), RedisCommands.PING); + r.onComplete((resp, exc) -> { + if (exc != null) { + result.tryFailure(exc); + return; + } + + if (sentinels.putIfAbsent(addr, client) == null) { + log.info("sentinel: {} added", addr); + } + result.trySuccess(null); + }); + }); + }); return result; }