diff --git a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java index 8ea7f8a98..a02bb61ba 100644 --- a/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java +++ b/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java @@ -87,8 +87,6 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { private boolean isConfigEndpoint; - private AddressResolver resolver; - public ClusterConnectionManager(ClusterServersConfig cfg, Config config, UUID id) { super(config, id); @@ -103,15 +101,14 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { RedisConnection connection = connectionFuture.syncUninterruptibly().getNow(); if (cfg.getNodeAddresses().size() == 1) { - this.resolver = resolverGroup.getResolver(getGroup().next()); + AddressResolver resolver = createResolverGroup().getResolver(getGroup().next()); Future> addrsFuture = resolver.resolveAll(InetSocketAddress.createUnresolved(addr.getHost(), addr.getPort())); List allAddrs = addrsFuture.syncUninterruptibly().getNow(); if (allAddrs.size() > 1) { configEndpointHostName = addr.getHost(); isConfigEndpoint = true; - } else { - resolver.close(); } + resolver.close(); } clusterNodesCommand = RedisCommands.CLUSTER_NODES; @@ -296,12 +293,14 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { public void run() { if (isConfigEndpoint) { final URI uri = cfg.getNodeAddresses().iterator().next(); + final AddressResolver resolver = createResolverGroup().getResolver(getGroup().next()); Future> allNodes = resolver.resolveAll(InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort())); allNodes.addListener(new FutureListener>() { @Override public void operationComplete(Future> future) throws Exception { AtomicReference lastException = new AtomicReference(future.cause()); if (!future.isSuccess()) { + resolver.close(); checkClusterState(cfg, Collections.emptyList().iterator(), lastException); return; } @@ -312,6 +311,7 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager { nodes.add(node); } + resolver.close(); Iterator nodesIterator = nodes.iterator(); checkClusterState(cfg, nodesIterator, lastException); }