Author: mturk Date: Wed Nov 29 04:26:37 2006 New Revision: 480552 URL: http://svn.apache.org/viewvc?view=rev&rev=480552 Log: Commit the voted keepAliveTimeout patch.
Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Constants.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Protocol.java tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/tc6.0.x/trunk/webapps/docs/config/ajp.xml tomcat/tc6.0.x/trunk/webapps/docs/config/http.xml Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java Wed Nov 29 04:26:37 2006 @@ -433,7 +433,17 @@ packetSize = i; } - + public int getKeepAliveTimeout() { + return ep.getKeepAliveTimeout(); + } + + + public void setKeepAliveTimeout( int i ) { + ep.setKeepAliveTimeout(i); + setAttribute("keepAliveTimeout", "" + i); + } + + // -------------------------------------- AjpConnectionHandler Inner Class Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java Wed Nov 29 04:26:37 2006 @@ -42,6 +42,7 @@ public static final int DEFAULT_CONNECTION_LINGER = -1; public static final int DEFAULT_CONNECTION_TIMEOUT = -1; public static final int DEFAULT_CONNECTION_UPLOAD_TIMEOUT = 300000; + public static final int DEFAULT_KEEPALIVE_TIMEOUT = 15000; public static final int DEFAULT_SERVER_SOCKET_TIMEOUT = 0; public static final boolean DEFAULT_TCP_NO_DELAY = true; Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Constants.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Constants.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Constants.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Constants.java Wed Nov 29 04:26:37 2006 @@ -39,6 +39,7 @@ public static final int DEFAULT_CONNECTION_LINGER = -1; public static final int DEFAULT_CONNECTION_TIMEOUT = 60000; public static final int DEFAULT_CONNECTION_UPLOAD_TIMEOUT = 300000; + public static final int DEFAULT_KEEPALIVE_TIMEOUT = 15000; public static final int DEFAULT_SERVER_SOCKET_TIMEOUT = 0; public static final boolean DEFAULT_TCP_NO_DELAY = true; Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Wed Nov 29 04:26:37 2006 @@ -209,6 +209,12 @@ */ protected int maxKeepAliveRequests = -1; + /** + * The number of seconds Tomcat will wait for a subsequent request + * before closing the connection. + */ + protected int keepAliveTimeout = 15000; + /** * SSL enabled ? @@ -704,6 +710,19 @@ return timeout; } + /** + * Set the Keep-Alive timeout. + */ + public void setKeepAliveTimeout(int timeout) { + keepAliveTimeout = timeout; + } + + /** + * Return the number Keep-Alive timeout. + */ + public int getKeepAliveTimeout() { + return keepAliveTimeout; + } /** * Set the server header name. Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Wed Nov 29 04:26:37 2006 @@ -202,6 +202,7 @@ private int socketBuffer = 9000; private Adapter adapter; private Http11ConnectionHandler cHandler; + private int keepAliveTimeout = 15000; // 15 seconds as in Apache HTTPD server /** * Compression value. @@ -463,11 +464,20 @@ setAttribute("maxKeepAliveRequests", "" + mkar); } + /** - * Return the Keep-Alive policy for the connection. + * The number of seconds Tomcat will wait for a subsequent request + * before closing the connection. The default is the same as for + * Apache HTTP Server (15 000 milliseconds). */ - public boolean getKeepAlive() { - return ((maxKeepAliveRequests != 0) && (maxKeepAliveRequests != 1)); + public int getKeepAliveTimeout() + { + return keepAliveTimeout; + } + + public void setKeepAliveTimeout(int timeout) + { + keepAliveTimeout = timeout; } /** Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java Wed Nov 29 04:26:37 2006 @@ -186,6 +186,12 @@ */ protected int maxKeepAliveRequests = -1; + /** + * The number of seconds Tomcat will wait for a subsequent request + * before closing the connection. + */ + protected int keepAliveTimeout = 15000; + /** * SSL information. @@ -621,6 +627,21 @@ return maxKeepAliveRequests; } + /** + * Set the Keep-Alive timeout. + */ + public void setKeepAliveTimeout(int timeout) { + keepAliveTimeout = timeout; + } + + + /** + * Return the number Keep-Alive timeout. + */ + public int getKeepAliveTimeout() { + return keepAliveTimeout; + } + /** * Set the maximum size of a POST which will be buffered in SSL mode. @@ -773,8 +794,13 @@ // Parsing the request header try { - if( !disableUploadTimeout && keptAlive && soTimeout > 0 ) { - socket.setSoTimeout(soTimeout); + if (!disableUploadTimeout && keptAlive) { + if (keepAliveTimeout > 0) { + socket.setSoTimeout(keepAliveTimeout); + } + else if (soTimeout > 0) { + socket.setSoTimeout(soTimeout); + } } inputBuffer.parseRequestLine(); request.setStartTime(System.currentTimeMillis()); Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Protocol.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Protocol.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Protocol.java Wed Nov 29 04:26:37 2006 @@ -71,6 +71,7 @@ public Http11Protocol() { setSoLinger(Constants.DEFAULT_CONNECTION_LINGER); setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT); + setKeepAliveTimeout(Constants.DEFAULT_KEEPALIVE_TIMEOUT); //setServerSoTimeout(Constants.DEFAULT_SERVER_SOCKET_TIMEOUT); setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY); } @@ -285,6 +286,22 @@ public int getMaxKeepAliveRequests() { return maxKeepAliveRequests; } public void setMaxKeepAliveRequests(int mkar) { maxKeepAliveRequests = mkar; } + // HTTP + /** + * The number of seconds Tomcat will wait for a subsequent request + * before closing the connection. The default is the same as for + * Apache HTTP Server (15 000 milliseconds). + */ + protected int keepAliveTimeout = 15000; + public int getKeepAliveTimeout() + { + return keepAliveTimeout; + } + + public void setKeepAliveTimeout(int timeout) + { + keepAliveTimeout = timeout; + } // HTTP /** @@ -584,6 +601,7 @@ new Http11Processor(protocol.maxHttpHeaderSize, protocol.endpoint); processor.setAdapter(protocol.adapter); processor.setMaxKeepAliveRequests(protocol.maxKeepAliveRequests); + processor.setKeepAliveTimeout(protocol.keepAliveTimeout); processor.setTimeout(protocol.timeout); processor.setDisableUploadTimeout(protocol.disableUploadTimeout); processor.setCompression(protocol.compression); Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Nov 29 04:26:37 2006 @@ -258,6 +258,21 @@ /** + * Keep-Alive timeout. + */ + protected int keepAliveTimeout = 15000; + public int getKeepAliveTimeout() + { + return keepAliveTimeout; + } + + public void setKeepAliveTimeout(int timeout) + { + keepAliveTimeout = timeout; + } + + + /** * Timeout on first request read before going to the poller, in ms. */ protected int firstReadTimeout = -1; @@ -1143,11 +1158,11 @@ protected void init() { pool = Pool.create(serverSockPool); int size = pollerSize / pollerThreadCount; - int timeout = soTimeout; + int timeout = keepAliveTimeout; if (comet) { // FIXME: Find an appropriate timeout value, for now, "longer than usual" // semms appropriate - timeout = soTimeout * 50; + timeout = keepAliveTimeout * 50; } serverPollset = allocatePoller(size, pool, timeout); if (serverPollset == 0 && size > 1024) { @@ -1561,14 +1576,14 @@ protected void init() { pool = Pool.create(serverSockPool); int size = sendfileSize / sendfileThreadCount; - sendfilePollset = allocatePoller(size, pool, soTimeout); + sendfilePollset = allocatePoller(size, pool, keepAliveTimeout); if (sendfilePollset == 0 && size > 1024) { size = 1024; - sendfilePollset = allocatePoller(size, pool, soTimeout); + sendfilePollset = allocatePoller(size, pool, keepAliveTimeout); } if (sendfilePollset == 0) { size = 62; - sendfilePollset = allocatePoller(size, pool, soTimeout); + sendfilePollset = allocatePoller(size, pool, keepAliveTimeout); } desc = new long[size * 2]; sendfileData = new HashMap<Long, SendfileData>(size); Modified: tomcat/tc6.0.x/trunk/webapps/docs/config/ajp.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/config/ajp.xml?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/config/ajp.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/config/ajp.xml Wed Nov 29 04:26:37 2006 @@ -218,6 +218,12 @@ presented. The default value is infinite (i.e. no timeout).</p> </attribute> + <attribute name="keepAliveTimeout" required="false"> + <p>The number of milliseconds this <strong>Connector</strong> will wait, + subsequent request before closing the connection. + The default value is infinite (i.e. no timeout).</p> + </attribute> + <attribute name="minProcessors" required="false"> <strong>deprecated</strong> <p>The minimum number of processors to start at initialization time. Modified: tomcat/tc6.0.x/trunk/webapps/docs/config/http.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/config/http.xml?view=diff&rev=480552&r1=480551&r2=480552 ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/config/http.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/config/http.xml Wed Nov 29 04:26:37 2006 @@ -270,6 +270,12 @@ presented. The default value is 60000 (i.e. 60 seconds).</p> </attribute> + <attribute name="keepAliveTimeout" required="false"> + <p>The number of milliseconds this <strong>Connector</strong> will wait, + subsequent request before closing the connection. + The default value is 15000 (i.e. 15 seconds).</p> + </attribute> + <attribute name="disableUploadTimeout" required="false"> <p>This flag allows the servlet container to use a different, longer connection timeout while a servlet is being executed, which in the end --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]