mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-25 06:16:40 +00:00
add internal flags to help simulate forcefull disconnections
This commit is contained in:
parent
a60e542718
commit
8af925a0b1
@ -78,6 +78,9 @@ public class ZenDiscovery extends AbstractLifecycleComponent<Discovery> implemen
|
||||
|
||||
private final TimeValue initialPingTimeout;
|
||||
|
||||
// a flag that should be used only for testing
|
||||
private final boolean sendLeaveRequest;
|
||||
|
||||
private final ElectMasterService electMaster;
|
||||
|
||||
|
||||
@ -102,6 +105,7 @@ public class ZenDiscovery extends AbstractLifecycleComponent<Discovery> implemen
|
||||
this.pingService = pingService;
|
||||
|
||||
this.initialPingTimeout = componentSettings.getAsTime("initial_ping_timeout", timeValueSeconds(3));
|
||||
this.sendLeaveRequest = componentSettings.getAsBoolean("send_leave_request", true);
|
||||
|
||||
logger.debug("Using initial_ping_timeout [{}]", initialPingTimeout);
|
||||
|
||||
@ -154,22 +158,24 @@ public class ZenDiscovery extends AbstractLifecycleComponent<Discovery> implemen
|
||||
}
|
||||
nodesFD.stop();
|
||||
initialStateSent.set(false);
|
||||
if (!master) {
|
||||
try {
|
||||
membership.sendLeaveRequestBlocking(latestDiscoNodes.masterNode(), localNode, TimeValue.timeValueSeconds(1));
|
||||
} catch (Exception e) {
|
||||
logger.debug("Failed to send leave request to master [{}]", e, latestDiscoNodes.masterNode());
|
||||
}
|
||||
} else {
|
||||
DiscoveryNode[] possibleMasters = electMaster.nextPossibleMasters(latestDiscoNodes.nodes().values(), 5);
|
||||
for (DiscoveryNode possibleMaster : possibleMasters) {
|
||||
if (localNode.equals(possibleMaster)) {
|
||||
continue;
|
||||
}
|
||||
if (sendLeaveRequest) {
|
||||
if (!master) {
|
||||
try {
|
||||
membership.sendLeaveRequest(latestDiscoNodes.masterNode(), possibleMaster);
|
||||
membership.sendLeaveRequestBlocking(latestDiscoNodes.masterNode(), localNode, TimeValue.timeValueSeconds(1));
|
||||
} catch (Exception e) {
|
||||
logger.debug("Failed to send leave request from master [{}] to possible master [{}]", e, latestDiscoNodes.masterNode(), possibleMaster);
|
||||
logger.debug("Failed to send leave request to master [{}]", e, latestDiscoNodes.masterNode());
|
||||
}
|
||||
} else {
|
||||
DiscoveryNode[] possibleMasters = electMaster.nextPossibleMasters(latestDiscoNodes.nodes().values(), 5);
|
||||
for (DiscoveryNode possibleMaster : possibleMasters) {
|
||||
if (localNode.equals(possibleMaster)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
membership.sendLeaveRequest(latestDiscoNodes.masterNode(), possibleMaster);
|
||||
} catch (Exception e) {
|
||||
logger.debug("Failed to send leave request from master [{}] to possible master [{}]", e, latestDiscoNodes.masterNode(), possibleMaster);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +69,10 @@ public class MasterFaultDetection extends AbstractComponent {
|
||||
|
||||
private final int pingRetryCount;
|
||||
|
||||
// used mainly for testing, should always be true
|
||||
private final boolean registerConnectionListener;
|
||||
|
||||
|
||||
private final FDConnectionListener connectionListener;
|
||||
|
||||
private volatile MasterPinger masterPinger;
|
||||
@ -91,11 +95,14 @@ public class MasterFaultDetection extends AbstractComponent {
|
||||
this.pingInterval = componentSettings.getAsTime("ping_interval", timeValueSeconds(1));
|
||||
this.pingRetryTimeout = componentSettings.getAsTime("ping_timeout", timeValueSeconds(30));
|
||||
this.pingRetryCount = componentSettings.getAsInt("ping_retries", 3);
|
||||
this.registerConnectionListener = componentSettings.getAsBoolean("register_connection_listener", true);
|
||||
|
||||
logger.debug("Master FD uses ping_interval [{}], ping_timeout [{}], ping_retries [{}]", pingInterval, pingRetryTimeout, pingRetryCount);
|
||||
|
||||
this.connectionListener = new FDConnectionListener();
|
||||
transportService.addConnectionListener(connectionListener);
|
||||
if (registerConnectionListener) {
|
||||
transportService.addConnectionListener(connectionListener);
|
||||
}
|
||||
|
||||
transportService.registerHandler(MasterPingRequestHandler.ACTION, new MasterPingRequestHandler());
|
||||
}
|
||||
|
@ -64,6 +64,9 @@ public class NodesFaultDetection extends AbstractComponent {
|
||||
|
||||
private final int pingRetryCount;
|
||||
|
||||
// used mainly for testing, should always be true
|
||||
private final boolean registerConnectionListener;
|
||||
|
||||
|
||||
private final CopyOnWriteArrayList<Listener> listeners = new CopyOnWriteArrayList<Listener>();
|
||||
|
||||
@ -84,13 +87,16 @@ public class NodesFaultDetection extends AbstractComponent {
|
||||
this.pingInterval = componentSettings.getAsTime("ping_interval", timeValueSeconds(1));
|
||||
this.pingRetryTimeout = componentSettings.getAsTime("ping_timeout", timeValueSeconds(30));
|
||||
this.pingRetryCount = componentSettings.getAsInt("ping_retries", 3);
|
||||
this.registerConnectionListener = componentSettings.getAsBoolean("register_connection_listener", true);
|
||||
|
||||
logger.debug("Nodes FD uses ping_interval [{}], ping_timeout [{}], ping_retries [{}]", pingInterval, pingRetryTimeout, pingRetryCount);
|
||||
|
||||
transportService.registerHandler(PingRequestHandler.ACTION, new PingRequestHandler());
|
||||
|
||||
this.connectionListener = new FDConnectionListener();
|
||||
transportService.addConnectionListener(connectionListener);
|
||||
if (registerConnectionListener) {
|
||||
transportService.addConnectionListener(connectionListener);
|
||||
}
|
||||
}
|
||||
|
||||
public void addListener(Listener listener) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user