From 3d3d429922b824fcce7f907e7e9f189a4dceb900 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 15 Aug 2019 12:42:41 +0300 Subject: [PATCH] refactoring --- .../connection/SentinelConnectionManager.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index e0d531b44..893907aa3 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -101,24 +101,39 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { this.sentinelResolver = resolverGroup.getResolver(getGroup().next()); + boolean connected = false; + for (String address : cfg.getSentinelAddresses()) { RedisURI addr = new RedisURI(address); RedisClient client = createClient(NodeType.SENTINEL, addr, this.config.getConnectTimeout(), this.config.getTimeout(), null); try { RedisConnection c = client.connect(); + connected = true; try { c.sync(RedisCommands.PING); scheme = addr.getScheme(); } catch (RedisAuthRequiredException e) { usePassword = true; } - client.shutdown(); break; + } catch (RedisConnectionException e) { + log.warn("Can't connect to sentinel server. {}", e.getMessage()); } catch (Exception e) { // skip + } finally { + client.shutdown(); } } + if (!connected) { + stopThreads(); + StringBuilder list = new StringBuilder(); + for (String address : cfg.getSentinelAddresses()) { + list.append(address).append(", "); + } + throw new RedisConnectionException("Unable to connect to Redis sentinel servers: " + list); + } + for (String address : cfg.getSentinelAddresses()) { RedisURI addr = new RedisURI(address); if (NetUtil.createByteArrayFromIpAddressString(addr.getHost()) == null && !addr.getHost().equals("localhost")) { @@ -190,7 +205,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { break; } catch (RedisConnectionException e) { - log.warn("Can't connect to sentinel server. {}", e.getMessage()); + // skip } finally { client.shutdownAsync(); }