diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/common/util/concurrent/TransferThreadPoolExecutor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/common/util/concurrent/TransferThreadPoolExecutor.java index c4971909454..bb5fe3a8939 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/common/util/concurrent/TransferThreadPoolExecutor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/common/util/concurrent/TransferThreadPoolExecutor.java @@ -496,7 +496,7 @@ public class TransferThreadPoolExecutor extends AbstractExecutorService { mainLock.lock(); boolean canExit; try { - canExit = runState >= STOP || queueSize.get() == 0; + canExit = runState >= STOP || (queueSize.get() == 0 && poolSize.get() > corePoolSize); } finally { mainLock.unlock(); }