Merge pull request #15212 from ywelsch/fix/rejectedexecution-on-shutdown

Ignore RejectedExecutionException in NodesFaultDetection
This commit is contained in:
Yannick Welsch 2015-12-04 16:36:08 +01:00
commit 1905f495bf
1 changed files with 13 additions and 8 deletions

View File

@ -26,6 +26,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException;
import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.*; import org.elasticsearch.transport.*;
@ -41,7 +42,7 @@ import static org.elasticsearch.common.util.concurrent.ConcurrentCollections.new
public class NodesFaultDetection extends FaultDetection { public class NodesFaultDetection extends FaultDetection {
public static final String PING_ACTION_NAME = "internal:discovery/zen/fd/ping"; public static final String PING_ACTION_NAME = "internal:discovery/zen/fd/ping";
public abstract static class Listener { public abstract static class Listener {
public void onNodeFailure(DiscoveryNode node, String reason) {} public void onNodeFailure(DiscoveryNode node, String reason) {}
@ -145,14 +146,18 @@ public class NodesFaultDetection extends FaultDetection {
} }
private void notifyNodeFailure(final DiscoveryNode node, final String reason) { private void notifyNodeFailure(final DiscoveryNode node, final String reason) {
threadPool.generic().execute(new Runnable() { try {
@Override threadPool.generic().execute(new Runnable() {
public void run() { @Override
for (Listener listener : listeners) { public void run() {
listener.onNodeFailure(node, reason); for (Listener listener : listeners) {
listener.onNodeFailure(node, reason);
}
} }
} });
}); } catch (EsRejectedExecutionException ex) {
logger.trace("[node ] [{}] ignoring node failure (reason [{}]). Local node is shutting down", ex, node, reason);
}
} }
private void notifyPingReceived(final PingRequest pingRequest) { private void notifyPingReceived(final PingRequest pingRequest) {