refactoring

pull/5170/head
Nikita Koksharov 2 years ago
parent 869e5c6079
commit 651b3f1f48

@ -199,9 +199,11 @@ public class MasterSlaveEntry {
if (!config.isSlaveNotUsed() if (!config.isSlaveNotUsed()
&& !masterEntry.getClient().getAddr().equals(entry.getClient().getAddr()) && !masterEntry.getClient().getAddr().equals(entry.getClient().getAddr())
&& slaveBalancer.getAvailableClients() == 0) { && slaveBalancer.getAvailableClients() == 0) {
if (slaveBalancer.unfreeze(masterEntry.getClient().getAddr(), FreezeReason.SYSTEM)) { slaveBalancer.unfreezeAsync(masterEntry.getClient().getAddr(), FreezeReason.SYSTEM).thenAccept(r -> {
if (r) {
log.info("master {} used as slave", masterEntry.getClient().getAddr()); log.info("master {} used as slave", masterEntry.getClient().getAddr());
} }
});
} }
nodeDown(entry); nodeDown(entry);

@ -124,53 +124,6 @@ public class LoadBalancerManager {
return unfreezeAsync(entry, freezeReason); return unfreezeAsync(entry, freezeReason);
} }
public boolean unfreeze(InetSocketAddress address, FreezeReason freezeReason) {
ClientConnectionsEntry entry = getEntry(address);
if (entry == null) {
log.error("Can't find {} in slaves! Available slaves: {}", address, client2Entry.keySet());
return false;
}
return unfreeze(entry, freezeReason);
}
public boolean unfreeze(ClientConnectionsEntry entry, FreezeReason freezeReason) {
synchronized (entry) {
if (!entry.isFreezed()) {
return false;
}
if (freezeReason != FreezeReason.RECONNECT
|| entry.getFreezeReason() == FreezeReason.RECONNECT) {
if (!entry.isInitialized()) {
entry.setInitialized(true);
List<CompletableFuture<Void>> futures = new ArrayList<>(2);
futures.add(slaveConnectionPool.initConnections(entry));
futures.add(pubSubConnectionPool.initConnections(entry));
CompletableFuture<Void> future = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
future.whenComplete((r, e) -> {
if (e != null) {
log.error("Unable to unfreeze entry: {}", entry, e);
entry.setInitialized(false);
connectionManager.getServiceManager().newTimeout(t -> {
unfreeze(entry, freezeReason);
}, 1, TimeUnit.SECONDS);
return;
}
entry.resetFirstFail();
entry.setFreezeReason(null);
log.debug("Unfreezed entry: {}", entry);
});
return true;
}
}
}
return false;
}
public CompletableFuture<Boolean> unfreezeAsync(ClientConnectionsEntry entry, FreezeReason freezeReason) { public CompletableFuture<Boolean> unfreezeAsync(ClientConnectionsEntry entry, FreezeReason freezeReason) {
return unfreezeAsync(entry, freezeReason, 0); return unfreezeAsync(entry, freezeReason, 0);
} }

Loading…
Cancel
Save