@Override public Future<Void> setupMasterEntry(String host, int port) { RedisClient masterClient = connectionManager.createClient(host, port); masterEntry = new ClientConnectionsEntry( masterClient, config.getMasterConnectionMinimumIdleSize(), config.getMasterConnectionPoolSize(), config.getSlaveConnectionMinimumIdleSize(), config.getSlaveSubscriptionConnectionPoolSize(), connectionManager, NodeType.MASTER, config); final Promise<Void> res = connectionManager.newPromise(); Future<Void> f = writeConnectionHolder.add(masterEntry); Future<Void> s = pubSubConnectionHolder.add(masterEntry); FutureListener<Void> listener = new FutureListener<Void>() { AtomicInteger counter = new AtomicInteger(2); @Override public void operationComplete(Future<Void> future) throws Exception { if (!future.isSuccess()) { res.setFailure(future.cause()); return; } if (counter.decrementAndGet() == 0) { res.setSuccess(null); } } }; f.addListener(listener); s.addListener(listener); return res; }