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:49:07 UTC

svn commit: r1638749 - in /tomcat/trunk/java/org/apache/coyote/ajp: AbstractAjpProcessor.java AjpAprProcessor.java AjpNio2Processor.java AjpNioProcessor.java

Author: markt
Date: Wed Nov 12 10:49:07 2014
New Revision: 1638749

URL: http://svn.apache.org/r1638749
Log:
Simplify handling of tiemouts now that async timeout has been separated
from read/write timeout.

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.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=1638749&r1=1638748&r2=1638749&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:49:07 2014
@@ -678,7 +678,6 @@ public abstract class AbstractAjpProcess
             if(!getAdapter().asyncDispatch(request, response, status)) {
                 setErrorState(ErrorState.CLOSE_NOW, null);
             }
-            resetTimeouts();
         } catch (InterruptedIOException e) {
             setErrorState(ErrorState.CLOSE_NOW, e);
         } catch (Throwable t) {
@@ -697,6 +696,10 @@ public abstract class AbstractAjpProcess
                 return SocketState.LONG;
             }
         } else {
+            // Set keep alive timeout for next request if enabled
+            if (keepAliveTimeout > 0) {
+                socketWrapper.setTimeout(keepAliveTimeout);
+            }
             request.updateCounters();
             if (getErrorState().isError()) {
                 return SocketState.CLOSED;
@@ -841,7 +844,7 @@ public abstract class AbstractAjpProcess
             request.updateCounters();
 
             rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE);
-            // Set keep alive timeout if enabled
+            // Set keep alive timeout for next request if enabled
             if (keepAliveTimeout > 0) {
                 socketWrapper.setTimeout(keepAliveTimeout);
             }
@@ -919,14 +922,6 @@ public abstract class AbstractAjpProcess
 
     // ------------------------------------------------------ Protected Methods
 
-    // Methods called by asyncDispatch
-    /**
-     * Provides a mechanism for those connector implementations (currently only
-     * NIO) that need to reset timeouts from Async timeouts to standard HTTP
-     * timeouts once async processing completes.
-     */
-    protected abstract void resetTimeouts();
-
     // Methods called by prepareResponse()
     protected abstract int output(byte[] src, int offset, int length,
             boolean block) throws IOException;

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java?rev=1638749&r1=1638748&r2=1638749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Wed Nov 12 10:49:07 2014
@@ -79,12 +79,6 @@ public class AjpAprProcessor extends Abs
                 socketWrapper.getSocket().longValue(), -1, read, write);
     }
 
-    @Override
-    protected void resetTimeouts() {
-        // NO-OP. The AJP APR/native connector only uses the timeout value on
-        //        time SocketWrapper for async timeouts.
-    }
-
 
     @Override
     protected void setupSocket(SocketWrapperBase<Long> socketWrapper) {

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java?rev=1638749&r1=1638748&r2=1638749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java Wed Nov 12 10:49:07 2014
@@ -99,25 +99,6 @@ public class AjpNio2Processor extends Ab
         // already be pending
     }
 
-    @Override
-    protected void resetTimeouts() {
-        // The NIO connector uses the timeout configured on the wrapper in the
-        // poller. Therefore, it needs to be reset once asycn processing has
-        // finished.
-        if (!getErrorState().isError() && socketWrapper != null &&
-                asyncStateMachine.isAsyncDispatching()) {
-            long soTimeout = endpoint.getSoTimeout();
-
-            //reset the timeout
-            if (keepAliveTimeout > 0) {
-                socketWrapper.setTimeout(keepAliveTimeout);
-            } else {
-                socketWrapper.setTimeout(soTimeout);
-            }
-        }
-
-    }
-
 
     @Override
     protected void setupSocket(SocketWrapperBase<Nio2Channel> socketWrapper)

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java?rev=1638749&r1=1638748&r2=1638749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java Wed Nov 12 10:49:07 2014
@@ -78,28 +78,6 @@ public class AjpNioProcessor extends Abs
 
 
     @Override
-    protected void resetTimeouts() {
-        // The NIO connector uses the timeout configured on the wrapper in the
-        // poller. Therefore, it needs to be reset once asycn processing has
-        // finished.
-        final NioEndpoint.NioSocketWrapper attach =
-                (NioEndpoint.NioSocketWrapper)socketWrapper.getSocket().getAttachment(false);
-        if (!getErrorState().isError() && attach != null &&
-                asyncStateMachine.isAsyncDispatching()) {
-            long soTimeout = endpoint.getSoTimeout();
-
-            //reset the timeout
-            if (keepAliveTimeout > 0) {
-                attach.setTimeout(keepAliveTimeout);
-            } else {
-                attach.setTimeout(soTimeout);
-            }
-        }
-
-    }
-
-
-    @Override
     protected void setupSocket(SocketWrapperBase<NioChannel> socketWrapper)
             throws IOException {
         // NO-OP



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