Fixed - clients duplication during discovering ip change of hostname. #1304

pull/1253/merge
Nikita 7 years ago
parent 89c391c9d7
commit 9670f19b0f

@ -136,7 +136,14 @@ public class DNSMonitor {
log.info("Detected DNS change. Slave {} has changed ip from {} to {}",
entry.getKey().getHost(), currentSlaveAddr.getAddress().getHostAddress(), newSlaveAddr.getAddress().getHostAddress());
for (final MasterSlaveEntry masterSlaveEntry : connectionManager.getEntrySet()) {
if (masterSlaveEntry.hasSlave(currentSlaveAddr)) {
if (!masterSlaveEntry.hasSlave(currentSlaveAddr)) {
continue;
}
if (masterSlaveEntry.hasSlave(newSlaveAddr)) {
masterSlaveEntry.slaveUp(newSlaveAddr, FreezeReason.MANAGER);
masterSlaveEntry.slaveDown(currentSlaveAddr, FreezeReason.MANAGER);
} else {
RFuture<Void> addFuture = masterSlaveEntry.addSlave(newSlaveAddr, entry.getKey());
addFuture.addListener(new FutureListener<Void>() {
@Override
@ -149,8 +156,8 @@ public class DNSMonitor {
masterSlaveEntry.slaveDown(currentSlaveAddr, FreezeReason.MANAGER);
}
});
break;
}
break;
}
slaves.put(entry.getKey(), newSlaveAddr);
}

@ -428,7 +428,7 @@ public class MasterSlaveEntry {
// exclude master from slaves
if (!config.checkSkipSlavesInit()
&& !addr.equals(entry.getClient().getAddr())) {
slaveDown(masterEntry.getClient().getAddr(), FreezeReason.SYSTEM);
slaveDown(addr, FreezeReason.SYSTEM);
log.info("master {} excluded from slaves", addr);
}
return true;
@ -443,11 +443,27 @@ public class MasterSlaveEntry {
// exclude master from slaves
if (!config.checkSkipSlavesInit()
&& !URIBuilder.compare(addr, address)) {
slaveDown(masterEntry.getClient().getAddr(), FreezeReason.SYSTEM);
slaveDown(addr, FreezeReason.SYSTEM);
log.info("master {} excluded from slaves", addr);
}
return true;
}
public boolean slaveUp(InetSocketAddress address, FreezeReason freezeReason) {
if (!slaveBalancer.unfreeze(address, freezeReason)) {
return false;
}
InetSocketAddress addr = masterEntry.getClient().getAddr();
// exclude master from slaves
if (!config.checkSkipSlavesInit()
&& !addr.equals(address)) {
slaveDown(addr, FreezeReason.SYSTEM);
log.info("master {} excluded from slaves", addr);
}
return true;
}
/**
* Freeze slave with <code>redis(s)://host:port</code> from slaves list.

Loading…
Cancel
Save