|
|
@ -93,27 +93,33 @@ public class SingleConnectionManager extends MasterSlaveConnectionManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void monitorDnsChange(final SingleServerConfig cfg) {
|
|
|
|
private void monitorDnsChange(final SingleServerConfig cfg) {
|
|
|
|
monitorFuture = GlobalEventExecutor.INSTANCE.scheduleWithFixedDelay(new Runnable() {
|
|
|
|
monitorFuture = GlobalEventExecutor.INSTANCE.schedule(new Runnable() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
|
try {
|
|
|
|
// As InetAddress.getByName call is blocking. Method should be run in dedicated thread
|
|
|
|
InetAddress master = currentMaster.get();
|
|
|
|
getExecutor().execute(new Runnable() {
|
|
|
|
InetAddress now = InetAddress.getByName(cfg.getAddress().getHost());
|
|
|
|
@Override
|
|
|
|
if (!now.getHostAddress().equals(master.getHostAddress())) {
|
|
|
|
public void run() {
|
|
|
|
log.info("Detected DNS change. {} has changed from {} to {}", cfg.getAddress().getHost(), master.getHostAddress(), now.getHostAddress());
|
|
|
|
try {
|
|
|
|
if (currentMaster.compareAndSet(master, now)) {
|
|
|
|
InetAddress master = currentMaster.get();
|
|
|
|
changeMaster(singleSlotRange.getStartSlot(), cfg.getAddress());
|
|
|
|
InetAddress now = InetAddress.getByName(cfg.getAddress().getHost());
|
|
|
|
log.info("Master has been changed");
|
|
|
|
if (!now.getHostAddress().equals(master.getHostAddress())) {
|
|
|
|
|
|
|
|
log.info("Detected DNS change. {} has changed from {} to {}", cfg.getAddress().getHost(), master.getHostAddress(), now.getHostAddress());
|
|
|
|
|
|
|
|
if (currentMaster.compareAndSet(master, now)) {
|
|
|
|
|
|
|
|
changeMaster(singleSlotRange.getStartSlot(), cfg.getAddress());
|
|
|
|
|
|
|
|
log.info("Master has been changed");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
monitorDnsChange(cfg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}, cfg.getDnsMonitoringInterval(), cfg.getDnsMonitoringInterval(), TimeUnit.MILLISECONDS);
|
|
|
|
}, cfg.getDnsMonitoringInterval(), TimeUnit.MILLISECONDS);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|