|
|
@ -166,22 +166,30 @@ public class DNSMonitor {
|
|
|
|
|
|
|
|
|
|
|
|
slaveFound = true;
|
|
|
|
slaveFound = true;
|
|
|
|
if (masterSlaveEntry.hasSlave(newSlaveAddr)) {
|
|
|
|
if (masterSlaveEntry.hasSlave(newSlaveAddr)) {
|
|
|
|
masterSlaveEntry.slaveUp(newSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
CompletableFuture<Boolean> slaveUpFuture = masterSlaveEntry.slaveUpAsync(newSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
masterSlaveEntry.slaveDown(currentSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
slaveUpFuture.whenComplete((r, e) -> {
|
|
|
|
slaves.put(entry.getKey(), newSlaveAddr);
|
|
|
|
if (e != null) {
|
|
|
|
promise.complete(null);
|
|
|
|
promise.complete(null);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (r) {
|
|
|
|
|
|
|
|
slaves.put(entry.getKey(), newSlaveAddr);
|
|
|
|
|
|
|
|
masterSlaveEntry.slaveDownAsync(currentSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
promise.complete(null);
|
|
|
|
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
CompletableFuture<Void> addFuture = masterSlaveEntry.addSlave(newSlaveAddr, entry.getKey());
|
|
|
|
CompletableFuture<Void> addFuture = masterSlaveEntry.addSlave(newSlaveAddr, entry.getKey());
|
|
|
|
addFuture.whenComplete((res, e) -> {
|
|
|
|
addFuture.whenComplete((res, e) -> {
|
|
|
|
promise.complete(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (e != null) {
|
|
|
|
if (e != null) {
|
|
|
|
log.error("Can't add slave: " + newSlaveAddr, e);
|
|
|
|
log.error("Can't add slave: " + newSlaveAddr, e);
|
|
|
|
|
|
|
|
promise.complete(null);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
masterSlaveEntry.slaveDown(currentSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
|
|
|
|
slaves.put(entry.getKey(), newSlaveAddr);
|
|
|
|
slaves.put(entry.getKey(), newSlaveAddr);
|
|
|
|
|
|
|
|
masterSlaveEntry.slaveDownAsync(currentSlaveAddr, FreezeReason.MANAGER);
|
|
|
|
|
|
|
|
promise.complete(null);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|