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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org