From ba5cf6092dea776a18e1bf93e504ba32f6f27277 Mon Sep 17 00:00:00 2001 From: fhanik Date: Fri, 15 Dec 2006 01:58:56 +0000 Subject: [PATCH] Make sure we use an unbounded thread pool until we have implemented some sort of rejection policy. No need to wake up the selector more than once, it is only serviced by one thread git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@487423 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/tribes/transport/ReceiverBase.java | 12 ++++++------ .../apache/catalina/tribes/transport/nio/NioReceiver.java | 5 +---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/java/org/apache/catalina/tribes/transport/ReceiverBase.java b/java/org/apache/catalina/tribes/transport/ReceiverBase.java index 330d65423..4463a0193 100644 --- a/java/org/apache/catalina/tribes/transport/ReceiverBase.java +++ b/java/org/apache/catalina/tribes/transport/ReceiverBase.java @@ -19,7 +19,6 @@ import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; -import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -63,7 +62,7 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R private long tcpSelectorTimeout = 5000; //how many times to search for an available socket private int autoBind = 100; - private int maxThreads = 15; + private int maxThreads = Integer.MAX_VALUE; private int minThreads = 6; private int maxTasks = 100; private int minTasks = 10; @@ -77,7 +76,7 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R private int timeout = 3000; //3 seconds private boolean useBufferPool = true; - private Executor executor; + private ExecutorService executor; public ReceiverBase() { @@ -90,7 +89,8 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R } public void stop() { - if ( executor instanceof ExecutorService ) ((ExecutorService)executor).shutdown(); + if ( executor != null ) executor.shutdownNow();//ignore left overs + executor = null; } /** @@ -362,7 +362,7 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R return maxTasks; } - public Executor getExecutor() { + public ExecutorService getExecutor() { return executor; } @@ -472,7 +472,7 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R this.maxTasks = maxTasks; } - public void setExecutor(Executor executor) { + public void setExecutor(ExecutorService executor) { this.executor = executor; } diff --git a/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java b/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java index 95bb1d8dd..8abf4af1e 100644 --- a/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java +++ b/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java @@ -313,13 +313,10 @@ public class NioReceiver extends ReceiverBase implements Runnable, ChannelReceiv * @see org.apache.catalina.tribes.transport.ClusterReceiverBase#stopListening() */ protected void stopListening() { - // Bugzilla 37529: http://issues.apache.org/bugzilla/show_bug.cgi?id=37529 setListen(false); if (selector != null) { try { - for (int i = 0; i < getMaxThreads(); i++) { - selector.wakeup(); - } + selector.wakeup(); selector.close(); } catch (Exception x) { log.error("Unable to close cluster receiver selector.", x); -- 2.11.0