Author: fhanik
Date: Fri Jul 10 21:38:16 2009
New Revision: 793116

URL: http://svn.apache.org/viewvc?rev=793116&view=rev
Log:
Some more concurrency testing

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/DataSourceFactory.java
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.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/PooledConnection.java
    
tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.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=793116&r1=793115&r2=793116&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
 Fri Jul 10 21:38:16 2009
@@ -847,7 +847,7 @@
                     if (busy.contains(con))
                         continue;
                     long time = con.getTimestamp();
-                    if (((now - time) > con.getReleaseTime()) && 
(getSize()>getPoolProperties().getMinIdle())) {
+                    if ((con.getReleaseTime()>0) && ((now - time) > 
con.getReleaseTime()) && (getSize()>getPoolProperties().getMinIdle())) {
                         release(con);
                         idle.remove(con);
                         setToNull = true;

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java?rev=793116&r1=793115&r2=793116&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
 Fri Jul 10 21:38:16 2009
@@ -108,6 +108,7 @@
     protected final static String PROP_FAIR_QUEUE = "fairQueue";
     
     protected static final String PROP_USE_EQUALS = "useEquals";
+    protected static final String PROP_USE_CON_LOCK = "useLock";
     
     public static final int UNKNOWN_TRANSACTIONISOLATION = -1;
     
@@ -151,7 +152,8 @@
         PROP_USE_EQUALS,
         OBJECT_NAME,
         PROP_ABANDONWHENPERCENTAGEFULL,
-        PROP_MAXAGE
+        PROP_MAXAGE,
+        PROP_USE_CON_LOCK
     };
 
     // -------------------------------------------------- ObjectFactory Methods
@@ -424,6 +426,11 @@
             poolProperties.setMaxAge(Long.parseLong(value));
         }
         
+        value = properties.getProperty(PROP_USE_CON_LOCK);
+        if (value != null) {
+            poolProperties.setUseLock(Boolean.parseBoolean(value));
+        }
+        
         return poolProperties;
     }
 

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java?rev=793116&r1=793115&r2=793116&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
 Fri Jul 10 21:38:16 2009
@@ -287,6 +287,10 @@
         this.getPoolProperties().setFairQueue(fairQueue);
     }
     
+    public void setUseLock(boolean useLock) {
+        this.getPoolProperties().setUseLock(useLock);
+    }
+    
     public void setDefaultCatalog(String catalog) {
         this.getPoolProperties().setDefaultCatalog(catalog);
     }

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=793116&r1=793115&r2=793116&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
 Fri Jul 10 21:38:16 2009
@@ -72,7 +72,7 @@
     protected boolean useEquals = false;
     protected int abandonWhenPercentageFull = 0;
     protected long maxAge = 0;
-    protected boolean useLock = true;
+    protected boolean useLock = false;
     private InterceptorDefinition[] interceptors = null;
     
     public void setAbandonWhenPercentageFull(int percentage) {

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=793116&r1=793115&r2=793116&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
 Fri Jul 10 21:38:16 2009
@@ -77,7 +77,7 @@
     /**
      * Timestamp the connection was last 'touched' by the pool
      */
-    private long timestamp;
+    private volatile long timestamp;
     /**
      * Lock for this connection only
      */

Modified: 
tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java?rev=793116&r1=793115&r2=793116&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/TestConcurrency.java
 Fri Jul 10 21:38:16 2009
@@ -91,17 +91,16 @@
     
     public void testBrutal() throws Exception {
         ds.getPoolProperties().setRemoveAbandoned(false);
-        ds.getPoolProperties().setMinEvictableIdleTimeMillis(-1);
+        ds.getPoolProperties().setMinEvictableIdleTimeMillis(10);
         ds.getPoolProperties().setTimeBetweenEvictionRunsMillis(-1);
         ds.getConnection().close();
-        final int iter = 1000 * 10;
+        final int iter = 100000 * 10;
         final AtomicInteger loopcount = new AtomicInteger(0);
         final Runnable run = new Runnable() {
             public void run() {
                 try {
                     while (loopcount.incrementAndGet() < iter) {
                         Connection con = ds.getConnection();
-                        Thread.sleep(10);
                         con.close();
                     }
                 }catch (Exception x) {
@@ -136,7 +135,7 @@
         assertEquals("Size comparison:",10, ds.getPool().getSize());
         assertEquals("Idle comparison:",10, ds.getPool().getIdle());
         assertEquals("Used comparison:",0, ds.getPool().getActive());
-        assertEquals("Connect count",10,Driver.connectCount.get());
+        assertEquals("Connect 
count",10,Driver.connectCount.get()-Driver.disconnectCount.get());
             
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to