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 2011/07/07 23:57:13 UTC
svn commit: r1144067 - in /tomcat/trunk/java/org/apache/coyote/http11:
AbstractHttp11Processor.java Http11AprProcessor.java
Http11NioProcessor.java Http11Processor.java
Author: markt
Date: Thu Jul 7 21:57:13 2011
New Revision: 1144067
URL: http://svn.apache.org/viewvc?rev=1144067&view=rev
Log:
Pull up asyncDispatch()
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
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=1144067&r1=1144066&r2=1144067&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jul 7 21:57:13 2011
@@ -17,6 +17,7 @@
package org.apache.coyote.http11;
import java.io.IOException;
+import java.io.InterruptedIOException;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -25,6 +26,7 @@ import java.util.regex.Pattern;
import org.apache.coyote.AbstractProcessor;
import org.apache.coyote.ActionCode;
import org.apache.coyote.AsyncContextCallback;
+import org.apache.coyote.RequestInfo;
import org.apache.coyote.http11.filters.BufferedInputFilter;
import org.apache.coyote.http11.filters.ChunkedInputFilter;
import org.apache.coyote.http11.filters.ChunkedOutputFilter;
@@ -43,6 +45,8 @@ import org.apache.tomcat.util.buf.Messag
import org.apache.tomcat.util.http.FastHttpDateFormat;
import org.apache.tomcat.util.http.MimeHeaders;
import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
+import org.apache.tomcat.util.net.SocketStatus;
import org.apache.tomcat.util.res.StringManager;
public abstract class AbstractHttp11Processor extends AbstractProcessor {
@@ -1200,6 +1204,52 @@ public abstract class AbstractHttp11Proc
}
+
+ public SocketState asyncDispatch(SocketStatus status) {
+
+ RequestInfo rp = request.getRequestProcessor();
+ try {
+ rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+ error = !adapter.asyncDispatch(request, response, status);
+ resetTimeouts();
+ } catch (InterruptedIOException e) {
+ error = true;
+ } catch (Throwable t) {
+ ExceptionUtils.handleThrowable(t);
+ getLog().error(sm.getString("http11processor.request.process"), t);
+ error = true;
+ } finally {
+ if (error) {
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ adapter.log(request, response, 0);
+ }
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+ if (error) {
+ return SocketState.CLOSED;
+ } else if (isAsync()) {
+ return SocketState.LONG;
+ } else {
+ if (!keepAlive) {
+ return SocketState.CLOSED;
+ } else {
+ return SocketState.OPEN;
+ }
+ }
+ }
+
+
+ /**
+ * 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();
+
+
public void endRequest() {
// Finish the handling of the request
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1144067&r1=1144066&r2=1144067&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jul 7 21:57:13 2011
@@ -339,39 +339,9 @@ public class Http11AprProcessor extends
}
- public SocketState asyncDispatch(SocketStatus status) {
-
- RequestInfo rp = request.getRequestProcessor();
- try {
- rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
- error = !adapter.asyncDispatch(request, response, status);
- } catch (InterruptedIOException e) {
- error = true;
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- log.error(sm.getString("http11processor.request.process"), t);
- error = true;
- } finally {
- if (error) {
- // 500 - Internal Server Error
- response.setStatus(500);
- adapter.log(request, response, 0);
- }
- }
-
- rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
- if (error) {
- return SocketState.CLOSED;
- } else if (isAsync()) {
- return SocketState.LONG;
- } else {
- if (!keepAlive) {
- return SocketState.CLOSED;
- } else {
- return SocketState.OPEN;
- }
- }
+ @Override
+ protected void resetTimeouts() {
+ // NOOP for APR
}
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1144067&r1=1144066&r2=1144067&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Thu Jul 7 21:57:13 2011
@@ -173,59 +173,25 @@ public class Http11NioProcessor extends
}
}
-
- /**
- * Process pipelined HTTP requests using the specified input and output
- * streams.
- */
- public SocketState asyncDispatch(SocketStatus status) {
- RequestInfo rp = request.getRequestProcessor();
+ @Override
+ protected void resetTimeouts() {
final NioEndpoint.KeyAttachment attach = (NioEndpoint.KeyAttachment)socket.getAttachment(false);
- try {
- rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
- error = !adapter.asyncDispatch(request, response, status);
- if (!error && attach != null &&
- asyncStateMachine.isAsyncDispatching()) {
- long soTimeout = endpoint.getSoTimeout();
- int keepAliveTimeout = endpoint.getKeepAliveTimeout();
-
- //reset the timeout
- if (keepAlive && keepAliveTimeout>0) {
- attach.setTimeout(keepAliveTimeout);
- } else {
- attach.setTimeout(soTimeout);
- }
- }
- } catch (InterruptedIOException e) {
- error = true;
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- log.error(sm.getString("http11processor.request.process"), t);
- error = true;
- } finally {
- if (error) {
- // 500 - Internal Server Error
- response.setStatus(500);
- adapter.log(request, response, 0);
- }
- }
-
- rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
- if (error) {
- return SocketState.CLOSED;
- } else if (isAsync()) {
- return SocketState.LONG;
- } else {
- if (!keepAlive) {
- return SocketState.CLOSED;
+ if (!error && attach != null &&
+ asyncStateMachine.isAsyncDispatching()) {
+ long soTimeout = endpoint.getSoTimeout();
+ int keepAliveTimeout = endpoint.getKeepAliveTimeout();
+
+ //reset the timeout
+ if (keepAlive && keepAliveTimeout>0) {
+ attach.setTimeout(keepAliveTimeout);
} else {
- return SocketState.OPEN;
+ attach.setTimeout(soTimeout);
}
}
}
+
/**
* Process pipelined HTTP requests using the specified input and output
* streams.
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1144067&r1=1144066&r2=1144067&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Thu Jul 7 21:57:13 2011
@@ -379,42 +379,12 @@ public class Http11Processor extends Abs
}
- public SocketState asyncDispatch(SocketStatus status) {
-
- RequestInfo rp = request.getRequestProcessor();
- try {
- rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
- error = !adapter.asyncDispatch(request, response, status);
- } catch (InterruptedIOException e) {
- error = true;
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- log.error(sm.getString("http11processor.request.process"), t);
- error = true;
- } finally {
- if (error) {
- // 500 - Internal Server Error
- response.setStatus(500);
- adapter.log(request, response, 0);
- }
- }
-
- rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
- if (error) {
- return SocketState.CLOSED;
- } else if (isAsync()) {
- return SocketState.LONG;
- } else {
- if (!keepAlive) {
- return SocketState.CLOSED;
- } else {
- return SocketState.OPEN;
- }
- }
+ @Override
+ protected void resetTimeouts() {
+ // NOOP for APR
}
-
+
@Override
protected void recycleInternal() {
// Recycle
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org