Author: fhanik
Date: Wed Apr 15 05:44:43 2009
New Revision: 765054

URL: http://svn.apache.org/viewvc?rev=765054&view=rev
Log:
When using the fair queue, use a much more efficient idle connection handling 
by using a FILO queue
so that connections are reused properly

Modified:
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=765054&r1=765053&r2=765054&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 Wed Apr 15 05:44:43 2009
@@ -630,7 +630,7 @@
                             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 @@
                     try {
                         if (pool.getPoolProperties().isRemoveAbandoned())
                             pool.checkAbandoned();
-                        if 
(pool.getPoolProperties().getMaxIdle()<pool.idle.size())
+                        if 
(pool.getPoolProperties().getMinIdle()<pool.idle.size())
                             pool.checkIdle();
                         if (pool.getPoolProperties().isTestWhileIdle())
                             pool.testAllIdle();

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java?rev=765054&r1=765053&r2=765054&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java
 Wed Apr 15 05:44:43 2009
@@ -63,7 +63,7 @@
                 c = waiters.poll();
                 c.setItem(e);
             } else {
-                items.add(e);
+                items.addFirst(e);
             }
         } finally {
             lock.unlock();

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=765054&r1=765053&r2=765054&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
 Wed Apr 15 05:44:43 2009
@@ -45,7 +45,7 @@
     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;

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=765054&r1=765053&r2=765054&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 Wed Apr 15 05:44:43 2009
@@ -154,7 +154,7 @@
     }
     
     public int getNumActive() {
-        return getNumActive();
+        return getActive();
     }
 
     //=================================================================



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to