Author: markt Date: Wed Jun 13 16:00:57 2012 New Revision: 1349933 URL: http://svn.apache.org/viewvc?rev=1349933&view=rev Log: Simplify the APR poller now per socket timeouts are supported
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1342029 Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1349933&r1=1349932&r2=1349933&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Jun 13 16:00:57 2012 @@ -1094,17 +1094,15 @@ public class AprEndpoint extends Abstrac // Need two pollsets since the socketTimeout and the keep-alive timeout // can have different values. private long connectionPollset = 0; - private long keepAlivePollset = 0; private long pool = 0; private long[] desc; private long[] addSocket; - private boolean[] addSocketKeepAlive; + private int[] addSocketTimeout; private volatile int addCount = 0; private boolean comet = true; - private boolean separateKeepAlive = false; protected volatile int keepAliveCount = 0; public int getKeepAliveCount() { return keepAliveCount; } @@ -1120,35 +1118,20 @@ public class AprEndpoint extends Abstrac protected void init() { pool = Pool.create(serverSockPool); int size = getMaxConnections() / pollerThreadCount; - int keepAliveTimeout = getKeepAliveTimeout(); int socketTimeout = socketProperties.getSoTimeout(); - if (keepAliveTimeout != socketTimeout && !comet) { - separateKeepAlive = true; - } connectionPollset = allocatePoller(size, pool, socketTimeout); - if (separateKeepAlive) { - keepAlivePollset = allocatePoller(size, pool, keepAliveTimeout); - } if (connectionPollset == 0 && size > 1024) { size = 1024; connectionPollset = allocatePoller(size, pool, socketTimeout); - if (separateKeepAlive) { - keepAlivePollset = - allocatePoller(size, pool, keepAliveTimeout); - } } if (connectionPollset == 0) { size = 62; connectionPollset = allocatePoller(size, pool, socketTimeout); - if (separateKeepAlive) { - keepAlivePollset = - allocatePoller(size, pool, keepAliveTimeout); - } } desc = new long[size * 2]; keepAliveCount = 0; addSocket = new long[size]; - addSocketKeepAlive = new boolean[size]; + addSocketTimeout= new int[size]; addCount = 0; } @@ -1165,11 +1148,8 @@ public class AprEndpoint extends Abstrac destroySocket(addSocket[i]); } } - // Close all sockets still in the pollers + // Close all sockets still in the poller closePollset(connectionPollset); - if (separateKeepAlive) { - closePollset(keepAlivePollset); - } Pool.destroy(pool); keepAliveCount = 0; addCount = 0; @@ -1218,7 +1198,11 @@ public class AprEndpoint extends Abstrac return; } addSocket[addCount] = socket; - addSocketKeepAlive[addCount] = keepAlive; + if (keepAlive) { + addSocketTimeout[addCount] = getKeepAliveTimeout(); + } else { + addSocketTimeout[addCount] = getSoTimeout(); + } addCount++; this.notify(); } @@ -1270,14 +1254,10 @@ public class AprEndpoint extends Abstrac int successCount = 0; try { for (int i = (addCount - 1); i >= 0; i--) { - int rv; - if (separateKeepAlive && addSocketKeepAlive[i]) { - rv = Poll.add(keepAlivePollset, - addSocket[i], Poll.APR_POLLIN); - } else { - rv = Poll.add(connectionPollset, - addSocket[i], Poll.APR_POLLIN); - } + int rv = Poll.addWithTimeout( + connectionPollset, addSocket[i], + Poll.APR_POLLIN, + addSocketTimeout[i] * 1000); if (rv == Status.APR_SUCCESS) { successCount++; } else { @@ -1301,9 +1281,6 @@ public class AprEndpoint extends Abstrac if (doPoll(connectionPollset)) { continue; } - if (separateKeepAlive && doPoll(keepAlivePollset)) { - continue; - } // Check timeouts (much less frequently that polling) if (maintainTime > 1000000L && running) { @@ -1311,9 +1288,6 @@ public class AprEndpoint extends Abstrac if (socketProperties.getSoTimeout() > 0) { doTimeout(connectionPollset); } - if (separateKeepAlive) { - doTimeout(keepAlivePollset); - } } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org