You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2018/07/26 05:04:43 UTC

[2/4] mina-sshd git commit: [SSHD-835] Disable NoCloseExecutor execution calls if marked as shutdown

[SSHD-835] Disable NoCloseExecutor execution calls if marked as shutdown


Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/a52a9ded
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/a52a9ded
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/a52a9ded

Branch: refs/heads/master
Commit: a52a9ded58650c8f106c327d004506fc4bb4e62d
Parents: f998ae6
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Thu Jul 26 07:35:11 2018 +0300
Committer: Goldstein Lyor <ly...@c-b4.com>
Committed: Thu Jul 26 08:04:30 2018 +0300

----------------------------------------------------------------------
 .../apache/sshd/common/util/threads/ThreadUtils.java   | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/a52a9ded/sshd-core/src/main/java/org/apache/sshd/common/util/threads/ThreadUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/threads/ThreadUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/threads/ThreadUtils.java
index 66b5cd2..f09237e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/threads/ThreadUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/threads/ThreadUtils.java
@@ -45,6 +45,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.sshd.common.future.CloseFuture;
 import org.apache.sshd.common.future.DefaultCloseFuture;
 import org.apache.sshd.common.future.SshFutureListener;
+import org.apache.sshd.common.util.ValidateUtils;
 import org.apache.sshd.common.util.closeable.AbstractCloseable;
 import org.apache.sshd.common.util.logging.AbstractLoggingBean;
 
@@ -54,7 +55,6 @@ import org.apache.sshd.common.util.logging.AbstractLoggingBean;
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
 public final class ThreadUtils {
-
     private ThreadUtils() {
         throw new UnsupportedOperationException("No instance");
     }
@@ -73,7 +73,7 @@ public final class ThreadUtils {
      * @return Either the original service or a wrapped one - depending on the
      * value of the <tt>shutdownOnExit</tt> parameter
      */
-    public static CloseableExecutorService protectExecutorServiceShutdown(final CloseableExecutorService executorService, boolean shutdownOnExit) {
+    public static CloseableExecutorService protectExecutorServiceShutdown(CloseableExecutorService executorService, boolean shutdownOnExit) {
         if (executorService == null || shutdownOnExit || executorService instanceof NoCloseExecutor) {
             return executorService;
         } else {
@@ -251,7 +251,6 @@ public final class ThreadUtils {
     }
 
     public static class NoCloseExecutor implements CloseableExecutorService {
-
         protected final ExecutorService executor;
         protected final CloseFuture closeFuture;
 
@@ -262,41 +261,49 @@ public final class ThreadUtils {
 
         @Override
         public <T> Future<T> submit(Callable<T> task) {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.submit(task);
         }
 
         @Override
         public <T> Future<T> submit(Runnable task, T result) {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.submit(task, result);
         }
 
         @Override
         public Future<?> submit(Runnable task) {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.submit(task);
         }
 
         @Override
         public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.invokeAll(tasks);
         }
 
         @Override
         public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.invokeAll(tasks, timeout, unit);
         }
 
         @Override
         public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.invokeAny(tasks);
         }
 
         @Override
         public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             return executor.invokeAny(tasks, timeout, unit);
         }
 
         @Override
         public void execute(Runnable command) {
+            ValidateUtils.checkState(!isShutdown(), "Executor has been shut down");
             executor.execute(command);
         }