Return-Path: X-Original-To: apmail-tomcat-dev-archive@www.apache.org Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 13D6C43CD for ; Thu, 7 Jul 2011 21:57:40 +0000 (UTC) Received: (qmail 49313 invoked by uid 500); 7 Jul 2011 21:57:39 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 49042 invoked by uid 500); 7 Jul 2011 21:57:38 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 49033 invoked by uid 99); 7 Jul 2011 21:57:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Jul 2011 21:57:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Jul 2011 21:57:35 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id BD45A2388897 for ; Thu, 7 Jul 2011 21:57:13 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1144067 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractHttp11Processor.java Http11AprProcessor.java Http11NioProcessor.java Http11Processor.java Date: Thu, 07 Jul 2011 21:57:13 -0000 To: dev@tomcat.apache.org From: markt@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110707215713.BD45A2388897@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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