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