From 7a226122e3fddac018e9475cfc32cc02f75dd552 Mon Sep 17 00:00:00 2001 From: Boaz Leskes Date: Mon, 13 Jun 2016 23:04:03 +0300 Subject: [PATCH] MasterFaultDetection can leak an exception during shutdown --- .../discovery/zen/fd/MasterFaultDetection.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/discovery/zen/fd/MasterFaultDetection.java b/core/src/main/java/org/elasticsearch/discovery/zen/fd/MasterFaultDetection.java index 5f101cf3a1f..d6d523508e1 100644 --- a/core/src/main/java/org/elasticsearch/discovery/zen/fd/MasterFaultDetection.java +++ b/core/src/main/java/org/elasticsearch/discovery/zen/fd/MasterFaultDetection.java @@ -45,6 +45,7 @@ import org.elasticsearch.transport.TransportService; import java.io.IOException; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -196,14 +197,15 @@ public class MasterFaultDetection extends FaultDetection { private void notifyMasterFailure(final DiscoveryNode masterNode, final Throwable cause, final String reason) { if (notifiedMasterFailure.compareAndSet(false, true)) { - threadPool.generic().execute(new Runnable() { - @Override - public void run() { + try { + threadPool.generic().execute(() -> { for (Listener listener : listeners) { listener.onMasterFailure(masterNode, cause, reason); } - } - }); + }); + } catch (RejectedExecutionException e) { + logger.error("master failure notification was rejected, it's highly likely the node is shutting down", e); + } stop("master failure, " + reason); } }