[jboss-cvs] JBossAS SVN: r93143 - projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 2 17:12:39 EDT 2009


Author: gurkanerdogdu
Date: 2009-09-02 17:12:39 -0400 (Wed, 02 Sep 2009)
New Revision: 93143

Modified:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
Log:
JBJCA-164 Eliminate synchronization issues found in AbstractPool

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2009-09-02 20:22:22 UTC (rev 93142)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2009-09-02 21:12:39 UTC (rev 93143)
@@ -198,42 +198,35 @@
    {
       if (pool != null)
       {
-         synchronized (this.subPools)
+         Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
+         SubPoolContext other = null;
+         while (itSubPoolContexts.hasNext())
          {
-            Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
-            SubPoolContext other = null;
-            while (itSubPoolContexts.hasNext())
+            other = itSubPoolContexts.next();
+            if (other.getSubPool() == pool && pool.isEmpty())
             {
-               other = itSubPoolContexts.next();
-               if (other.getSubPool() == pool && pool.isEmpty())
-               {
-                  pool.shutdown();
-                  itSubPoolContexts.remove();
-                  break;
-               }
-            }            
-         }         
+               pool.shutdown();
+               itSubPoolContexts.remove();
+               break;
+            }
+         }
       }
-      
    }
 
    /**
     * {@inheritDoc}
-    */   
+    */
    public void flush()
    {
-      synchronized (this.subPools)
+      Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
+      SubPoolContext subPoolContext = null;
+      while (itSubPoolContexts.hasNext())
       {
-         Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
-         SubPoolContext subPoolContext = null;
-         while (itSubPoolContexts.hasNext())
-         {
-            subPoolContext = itSubPoolContexts.next();
-            subPoolContext.getSubPool().flush();
-         }
-         
-         this.subPools.clear();
-      }            
+         subPoolContext = itSubPoolContexts.next();
+         subPoolContext.getSubPool().flush();
+      }
+
+      this.subPools.clear();
    }
 
    /**
@@ -565,22 +558,18 @@
 
    /**
     * {@inheritDoc}
-    */   
+    */
    public void shutdown()
    {
-      synchronized (this.subPools)
+      Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
+      SubPoolContext subPoolContext = null;
+      while (itSubPoolContexts.hasNext())
       {
-         Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
-         SubPoolContext subPoolContext = null;
-         while (itSubPoolContexts.hasNext())
-         {
-            subPoolContext = itSubPoolContexts.next();
-            subPoolContext.getSubPool().shutdown();
-         }
-         
-         this.subPools.clear();
+         subPoolContext = itSubPoolContexts.next();
+         subPoolContext.getSubPool().shutdown();
       }
-      
+
+      this.subPools.clear();
    }
 
    /**
@@ -683,45 +672,42 @@
    private long getCounts(PoolCounts countType)
    {
       long count = 0L;
-      
-      synchronized (this.subPools)
+
+      Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
+      SubPoolContext subPoolContext = null;
+      while (itSubPoolContexts.hasNext())
       {
-         Iterator<SubPoolContext> itSubPoolContexts = this.subPools.values().iterator();
-         SubPoolContext subPoolContext = null;
-         while (itSubPoolContexts.hasNext())
+         subPoolContext = itSubPoolContexts.next();
+         if (countType.equals(PoolCounts.CONNECTION_COUNT))
          {
-            subPoolContext = itSubPoolContexts.next();
-            if (countType.equals(PoolCounts.CONNECTION_COUNT))
-            {
-               count += subPoolContext.getSubPool().getConnectionCount();
-            }
-            else if (countType.equals(PoolCounts.CONNECTION_IN_USE_COUNT))
-            {
-               count += subPoolContext.getSubPool().getConnectionInUseCount();
-            }            
-            else if (countType.equals(PoolCounts.CONNECTION_CREATED_COUNT))
-            {
-               count += subPoolContext.getSubPool().getConnectionCreatedCount();
-            }
-            else if (countType.equals(PoolCounts.CONNECTION_DESTROYED_COUNT))
-            {
-               count += subPoolContext.getSubPool().getConnectionDestroyedCount();  
-            }
-            else if (countType.equals(PoolCounts.CONNECTION_GET_AVAILABLE_COUNT))
-            {
-               count += subPoolContext.getSubPool().getAvailableConnections();
-            }
-            else if (countType.equals(PoolCounts.CONNECTION_GET_MAX_CONNECTIONS_IN_USE_COUNT))
-            {
-               count += subPoolContext.getSubPool().getMaxConnectionsInUseCount();
-            }
-            else
-            {
-               log.warn("Unknown count type : " + countType.toString());
-            }
+            count += subPoolContext.getSubPool().getConnectionCount();
          }
+         else if (countType.equals(PoolCounts.CONNECTION_IN_USE_COUNT))
+         {
+            count += subPoolContext.getSubPool().getConnectionInUseCount();
+         }
+         else if (countType.equals(PoolCounts.CONNECTION_CREATED_COUNT))
+         {
+            count += subPoolContext.getSubPool().getConnectionCreatedCount();
+         }
+         else if (countType.equals(PoolCounts.CONNECTION_DESTROYED_COUNT))
+         {
+            count += subPoolContext.getSubPool().getConnectionDestroyedCount();
+         }
+         else if (countType.equals(PoolCounts.CONNECTION_GET_AVAILABLE_COUNT))
+         {
+            count += subPoolContext.getSubPool().getAvailableConnections();
+         }
+         else if (countType.equals(PoolCounts.CONNECTION_GET_MAX_CONNECTIONS_IN_USE_COUNT))
+         {
+            count += subPoolContext.getSubPool().getMaxConnectionsInUseCount();
+         }
+         else
+         {
+            log.warn("Unknown count type : " + countType.toString());
+         }
       }
-      
+
       return count;
-   }   
+   }
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java	2009-09-02 20:22:22 UTC (rev 93142)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/InternalManagedConnectionPool.java	2009-09-02 21:12:39 UTC (rev 93143)
@@ -978,10 +978,7 @@
                {
                   if (!destroyed)
                   {
-                     //synchronized (cls)
-                     //{
                      returnForFrequencyCheck(cl);
-                     //}
                   }
                }
             }




More information about the jboss-cvs-commits mailing list