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 2014/11/12 11:48:57 UTC

svn commit: r1638747 - in /tomcat/trunk/java/org/apache: coyote/ajp/AbstractAjpProcessor.java coyote/http11/AbstractHttp11Processor.java tomcat/util/net/AbstractEndpoint.java tomcat/util/net/NioEndpoint.java

Author: markt
Date: Wed Nov 12 10:48:56 2014
New Revision: 1638747

URL: http://svn.apache.org/r1638747
Log:
Switch to dedicated async timeout property

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1638747&r1=1638746&r2=1638747&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Wed Nov 12 10:48:56 2014
@@ -518,8 +518,6 @@ public abstract class AbstractAjpProcess
         }
         case ASYNC_START: {
             asyncStateMachine.asyncStart((AsyncContextCallback) param);
-            // Async time out is based on SocketWrapper access time
-            getSocketWrapper().access();
             break;
         }
         case ASYNC_COMPLETE: {
@@ -542,7 +540,7 @@ public abstract class AbstractAjpProcess
         case ASYNC_SETTIMEOUT: {
             if (param == null) return;
             long timeout = ((Long)param).longValue();
-            socketWrapper.setTimeout(timeout);
+            socketWrapper.setAsyncTimeout(timeout);
             break;
         }
         case ASYNC_TIMEOUT: {

Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1638747&r1=1638746&r2=1638747&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Wed Nov 12 10:48:56 2014
@@ -792,8 +792,6 @@ public abstract class AbstractHttp11Proc
         }
         case ASYNC_START: {
             asyncStateMachine.asyncStart((AsyncContextCallback) param);
-            // Async time out is based on SocketWrapper access time
-            getSocketWrapper().access();
             break;
         }
         case ASYNC_DISPATCHED: {
@@ -848,9 +846,8 @@ public abstract class AbstractHttp11Proc
             if (param == null || socketWrapper == null) {
                 return;
             }
-            long timeout = ((Long)param).longValue();
-            // If we are not piggy backing on a worker thread, set the timeout
-            socketWrapper.setTimeout(timeout);
+            long timeout = ((Long) param).longValue();
+            socketWrapper.setAsyncTimeout(timeout);
             break;
         }
         case ASYNC_DISPATCH: {

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=1638747&r1=1638746&r2=1638747&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 12 10:48:56 2014
@@ -129,9 +129,12 @@ public abstract class AbstractEndpoint<S
                 }
                 long now = System.currentTimeMillis();
                 for (SocketWrapperBase<S> socket : waitingRequests) {
-                    long access = socket.getLastAsyncStart();
-                    if (socket.getTimeout() > 0 && (now - access) > socket.getTimeout()) {
-                        processSocket(socket, SocketStatus.TIMEOUT, true);
+                    long asyncTimeout = socket.getAsyncTimeout();
+                    if (asyncTimeout > 0) {
+                        long asyncStart = socket.getLastAsyncStart();
+                        if ((now - asyncStart) > asyncTimeout) {
+                            processSocket(socket, SocketStatus.TIMEOUT, true);
+                        }
                     }
                 }
 

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1638747&r1=1638746&r2=1638747&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Nov 12 10:48:56 2014
@@ -1290,12 +1290,8 @@ public class NioEndpoint extends Abstrac
                             key.interestOps(0);
                             ka.interestOps(0); //avoid duplicate stop calls
                             processKey(key,ka);
-                        } else if (!ka.isAsync() || ka.getTimeout() > 0) {
-                            // Async requests with a timeout of 0 or less never timeout
-                            long delta = now - ka.getLastAsyncStart();
-                            long timeout = (ka.getTimeout()==-1)?((long) socketProperties.getSoTimeout()):(ka.getTimeout());
-                            boolean isTimedout = delta > timeout;
-                            if (isTimedout) {
+                        } else if (ka.getAsyncTimeout() > 0) {
+                            if ((now - ka.getLastAsyncStart()) > ka.getAsyncTimeout()) {
                                 // Prevent subsequent timeouts if the timeout event takes a while to process
                                 ka.access(Long.MAX_VALUE);
                                 processSocket(ka, SocketStatus.TIMEOUT, true);



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