Merge pull request #2563 from markusdlugi/master

Perform Sentinel DNS check when all connections fail
pull/2577/head
Nikita Koksharov 5 years ago committed by GitHub
commit 6e1bafdb23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -256,32 +256,38 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
} }
} }
}; };
for (RedisURI host : sentinelHosts) { performSentinelDNSCheck(commonListener);
Future<List<InetSocketAddress>> allNodes = sentinelResolver.resolveAll(InetSocketAddress.createUnresolved(host.getHost(), host.getPort())); }
allNodes.addListener(new FutureListener<List<InetSocketAddress>>() { }, config.getDnsMonitoringInterval(), TimeUnit.MILLISECONDS);
@Override }
public void operationComplete(Future<List<InetSocketAddress>> future) throws Exception {
if (!future.isSuccess()) { private void performSentinelDNSCheck(FutureListener<List<InetSocketAddress>> commonListener) {
log.error("Unable to resolve " + host.getHost(), future.cause()); for (RedisURI host : sentinelHosts) {
return; Future<List<InetSocketAddress>> allNodes = sentinelResolver.resolveAll(InetSocketAddress.createUnresolved(host.getHost(), host.getPort()));
} allNodes.addListener(new FutureListener<List<InetSocketAddress>>() {
@Override
Set<RedisURI> newUris = future.getNow().stream() public void operationComplete(Future<List<InetSocketAddress>> future) throws Exception {
.map(addr -> toURI(addr.getAddress().getHostAddress(), "" + addr.getPort())) if (!future.isSuccess()) {
.collect(Collectors.toSet()); log.error("Unable to resolve " + host.getHost(), future.cause());
return;
for (RedisURI uri : newUris) { }
if (!sentinels.containsKey(uri)) {
registerSentinel(uri, getConfig()); Set<RedisURI> newUris = future.getNow().stream()
} .map(addr -> toURI(addr.getAddress().getHostAddress(), "" + addr.getPort()))
} .collect(Collectors.toSet());
for (RedisURI uri : newUris) {
if (!sentinels.containsKey(uri)) {
registerSentinel(uri, getConfig());
} }
}); }
allNodes.addListener(commonListener);
} }
});
if (commonListener != null) {
allNodes.addListener(commonListener);
} }
}, config.getDnsMonitoringInterval(), TimeUnit.MILLISECONDS); }
} }
private void scheduleChangeCheck(SentinelServersConfig cfg, Iterator<RedisClient> iterator) { private void scheduleChangeCheck(SentinelServersConfig cfg, Iterator<RedisClient> iterator) {
@ -306,6 +312,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
if (lastException.get() != null) { if (lastException.get() != null) {
log.error("Can't update cluster state", lastException.get()); log.error("Can't update cluster state", lastException.get());
} }
performSentinelDNSCheck(null);
scheduleChangeCheck(cfg, null); scheduleChangeCheck(cfg, null);
return; return;
} }

Loading…
Cancel
Save