diff options
Diffstat (limited to 'jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java')
-rw-r--r-- | jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java index 64903a6fbd..6e7c95e571 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.util.thread.strategy; import java.util.concurrent.Executor; +import java.util.concurrent.RejectedExecutionException; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -55,7 +56,26 @@ public class ProduceExecuteConsume implements ExecutionStrategy break; // Execute the task. - _executor.execute(task); + try + { + _executor.execute(task); + } + catch(RejectedExecutionException e) + { + // Close or discard tasks that cannot be executed + if (task instanceof Rejectable) + { + try + { + ((Rejectable)task).reject(); + } + catch (Throwable x) + { + e.addSuppressed(x); + LOG.warn(e); + } + } + } } } |