Make sure we use an unbounded thread pool until we have implemented some sort of...
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 15 Dec 2006 01:58:56 +0000 (01:58 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 15 Dec 2006 01:58:56 +0000 (01:58 +0000)
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
java/org/apache/catalina/tribes/transport/nio/NioReceiver.java

index 330d654..4463a01 100644 (file)
@@ -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;
     }
 
index 95bb1d8..8abf4af 100644 (file)
@@ -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);