From: fhanik Date: Wed, 15 Apr 2009 05:44:43 +0000 (+0000) Subject: When using the fair queue, use a much more efficient idle connection handling by... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=08bd8a6ea47ccb8305f8a874fa0200bb0dea9836;p=tomcat7.0 When using the fair queue, use a much more efficient idle connection handling by using a FILO queue so that connections are reused properly git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@765054 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java index dbb747140..2cea90d2b 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java @@ -630,7 +630,7 @@ public class ConnectionPool { con.validate(PooledConnection.VALIDATE_RETURN)) { con.setStackTrace(null); con.setTimestamp(System.currentTimeMillis()); - if ((idle.size()>=poolProperties.getMaxIdle()) || (!idle.offer(con))) { + if (((idle.size()>=poolProperties.getMaxIdle()) && !poolProperties.isPoolSweeperEnabled()) || (!idle.offer(con))) { if (log.isDebugEnabled()) { log.debug("Connection ["+con+"] will be closed and not returned to the pool, idle["+idle.size()+"]>=maxIdle["+poolProperties.getMaxIdle()+"] idle.offer failed."); } @@ -920,7 +920,7 @@ public class ConnectionPool { try { if (pool.getPoolProperties().isRemoveAbandoned()) pool.checkAbandoned(); - if (pool.getPoolProperties().getMaxIdle() implements BlockingQueue { c = waiters.poll(); c.setItem(e); } else { - items.add(e); + items.addFirst(e); } } finally { lock.unlock(); diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java index 4e4667518..c16f7a834 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java @@ -45,7 +45,7 @@ public class PoolProperties { protected String connectionProperties; protected int initialSize = 10; protected int maxActive = 100; - protected int maxIdle = maxActive; + protected int maxIdle = Integer.MAX_VALUE; protected int minIdle = initialSize; protected int maxWait = 30000; protected String validationQuery; diff --git a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java index 32e34c40e..a658d9858 100644 --- a/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java +++ b/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java @@ -154,7 +154,7 @@ public class ConnectionPool extends NotificationBroadcasterSupport implements Co } public int getNumActive() { - return getNumActive(); + return getActive(); } //=================================================================