Catch and Log RejectedExecutionException in async ping

This commit is contained in:
Simon Willnauer 2013-08-02 11:30:31 +02:00
parent a8dcfa5deb
commit 2a211705a3
1 changed files with 11 additions and 7 deletions

View File

@ -175,14 +175,18 @@ public class UnicastZenPing extends AbstractLifecycleComponent<ZenPing> implemen
threadPool.schedule(TimeValue.timeValueMillis(timeout.millis() / 2), ThreadPool.Names.GENERIC, new Runnable() {
@Override
public void run() {
sendPings(timeout, TimeValue.timeValueMillis(timeout.millis() / 2), sendPingsHandler);
ConcurrentMap<DiscoveryNode, PingResponse> responses = receivedResponses.remove(sendPingsHandler.id());
sendPingsHandler.close();
for (DiscoveryNode node : sendPingsHandler.nodeToDisconnect) {
logger.trace("[{}] disconnecting from {}", sendPingsHandler.id(), node);
transportService.disconnectFromNode(node);
try {
sendPings(timeout, TimeValue.timeValueMillis(timeout.millis() / 2), sendPingsHandler);
ConcurrentMap<DiscoveryNode, PingResponse> responses = receivedResponses.remove(sendPingsHandler.id());
sendPingsHandler.close();
for (DiscoveryNode node : sendPingsHandler.nodeToDisconnect) {
logger.trace("[{}] disconnecting from {}", sendPingsHandler.id(), node);
transportService.disconnectFromNode(node);
}
listener.onPing(responses.values().toArray(new PingResponse[responses.size()]));
} catch (RejectedExecutionException ex) {
logger.info("Ping execution ejected", ex);
}
listener.onPing(responses.values().toArray(new PingResponse[responses.size()]));
}
});
}