You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/11/06 21:17:24 UTC

svn commit: r1539452 - in /tomcat/trunk: java/org/apache/tomcat/util/net/AbstractEndpoint.java java/org/apache/tomcat/util/net/JIoEndpoint.java webapps/docs/config/ajp.xml webapps/docs/config/http.xml

Author: markt
Date: Wed Nov  6 20:17:24 2013
New Revision: 1539452

URL: http://svn.apache.org/r1539452
Log:
Make the time the internal executor waits for request processing threads to terminate before continuing with the connector stop process configurable.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
    tomcat/trunk/webapps/docs/config/ajp.xml
    tomcat/trunk/webapps/docs/config/http.xml

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1539452&r1=1539451&r2=1539452&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Wed Nov  6 20:17:24 2013
@@ -135,6 +135,7 @@ public abstract class AbstractEndpoint<S
      */
     protected volatile boolean internalExecutor = false;
 
+
     /**
      * counter for nr of connections handled by an endpoint
      */
@@ -157,9 +158,26 @@ public abstract class AbstractEndpoint<S
     // ----------------------------------------------------------------- Properties
 
     /**
+     * Time to wait for the internal executor (if used) to terminate when the
+     * endpoint is stopped in milliseconds. Defaults to 5000 (5 seconds).
+     */
+    private long executorTerminationTimeoutMillis = 5000;
+
+    public long getExecutorTerminationTimeoutMillis() {
+        return executorTerminationTimeoutMillis;
+    }
+
+    public void setExecutorTerminationTimeoutMillis(
+            long executorTerminationTimeoutMillis) {
+        this.executorTerminationTimeoutMillis = executorTerminationTimeoutMillis;
+    }
+
+
+    /**
      * Acceptor thread count.
      */
     protected int acceptorThreadCount = 0;
+
     public void setAcceptorThreadCount(int acceptorThreadCount) {
         this.acceptorThreadCount = acceptorThreadCount;
     }
@@ -521,7 +539,8 @@ public abstract class AbstractEndpoint<S
                 ThreadPoolExecutor tpe = (ThreadPoolExecutor) executor;
                 tpe.shutdownNow();
                 try {
-                    tpe.awaitTermination(5000, TimeUnit.MILLISECONDS);
+                    tpe.awaitTermination(getExecutorTerminationTimeoutMillis(),
+                            TimeUnit.MILLISECONDS);
                 } catch (InterruptedException e) {
                     // Ignore
                 }

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java?rev=1539452&r1=1539451&r2=1539452&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java Wed Nov  6 20:17:24 2013
@@ -73,6 +73,9 @@ public class JIoEndpoint extends Abstrac
         // Set maxConnections to zero so we can tell if the user has specified
         // their own value on the connector when we reach bind()
         setMaxConnections(0);
+        // Reduce the executor timeout for BIO as threads in keep-alive will not
+        // terminate when the executor interrupts them.
+        setExecutorTerminationTimeoutMillis(0);
     }
 
     // ------------------------------------------------------------- Properties

Modified: tomcat/trunk/webapps/docs/config/ajp.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/ajp.xml?rev=1539452&r1=1539451&r2=1539452&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/ajp.xml (original)
+++ tomcat/trunk/webapps/docs/config/ajp.xml Wed Nov  6 20:17:24 2013
@@ -339,6 +339,14 @@
       provide the thread pool.</p>
     </attribute>
 
+    <attribute name="executorTerminationTimeoutMillis" required="false">
+      <p>The time that the private internal executor will wait for request
+      processing threads to terminate before continuing with the process of
+      stopping the connector. If not set, the default is <code>0</code> (zero)
+      for the BIO connector and <code>5000</code> (5 seconds) for the NIO and
+      APR/native connectors.</p>
+    </attribute>
+
     <attribute name="keepAliveTimeout" required="false">
       <p>The number of milliseconds this <strong>Connector</strong> will wait for
        another AJP request before closing the connection.

Modified: tomcat/trunk/webapps/docs/config/http.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1539452&r1=1539451&r2=1539452&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/http.xml (original)
+++ tomcat/trunk/webapps/docs/config/http.xml Wed Nov  6 20:17:24 2013
@@ -376,6 +376,14 @@
       provide the thread pool.</p>
     </attribute>
 
+    <attribute name="executorTerminationTimeoutMillis" required="false">
+      <p>The time that the private internal executor will wait for request
+      processing threads to terminate before continuing with the process of
+      stopping the connector. If not set, the default is <code>0</code> (zero)
+      for the BIO connector and <code>5000</code> (5 seconds) for the NIO and
+      APR/native connectors.</p>
+    </attribute>
+
     <attribute name="keepAliveTimeout" required="false">
       <p>The number of milliseconds this <strong>Connector</strong> will wait
       for another HTTP request before closing the connection. The default value



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org