[jboss-cvs] JBossAS SVN: r107038 - branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 22 17:02:04 EDT 2010


Author: jesper.pedersen
Date: 2010-07-22 17:02:04 -0400 (Thu, 22 Jul 2010)
New Revision: 107038

Modified:
   branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
   branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
Log:
Minor performance optimization

Modified: branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-07-22 20:31:21 UTC (rev 107037)
+++ branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-07-22 21:02:04 UTC (rev 107038)
@@ -202,9 +202,10 @@
                      throw new RetryableResourceException("The pool has been shutdown");
                   }
 
-                  if (cls.size() > 0)
+                  int clsSize = cls.size();
+                  if (clsSize > 0)
                   {
-                     cl = (ConnectionListener) cls.remove(cls.size() - 1);
+                     cl = (ConnectionListener) cls.remove(clsSize - 1);
                      checkedOut.add(cl);
                      int size = (int) (maxSize - permits.availablePermits());
                      if (size > maxUsedConnections)

Modified: branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
===================================================================
--- branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-07-22 20:31:21 UTC (rev 107037)
+++ branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-07-22 21:02:04 UTC (rev 107038)
@@ -26,6 +26,8 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.management.ObjectName;
@@ -131,6 +133,8 @@
 {
    private static final Throwable FAILED_TO_ENLIST = new Throwable("Unabled to enlist resource, see the previous warnings."); 
 
+   private static final ConcurrentMap<Integer, Integer> SUCCEED_STATUS;
+
    private ObjectName transactionManagerService;
    
    //use the object name, please
@@ -174,6 +178,12 @@
       }
 
       IGNORE_STATUS_MARKED_FOR_ROLLBACK = value;
+
+      SUCCEED_STATUS = new ConcurrentHashMap<Integer, Integer>(4);
+      SUCCEED_STATUS.put(Integer.valueOf(Status.STATUS_ACTIVE), Integer.valueOf(Status.STATUS_ACTIVE));
+      SUCCEED_STATUS.put(Integer.valueOf(Status.STATUS_PREPARING), Integer.valueOf(Status.STATUS_PREPARING));
+      SUCCEED_STATUS.put(Integer.valueOf(Status.STATUS_PREPARED), Integer.valueOf(Status.STATUS_PREPARED));
+      SUCCEED_STATUS.put(Integer.valueOf(Status.STATUS_COMMITTING), Integer.valueOf(Status.STATUS_COMMITTING));
    }
 
    protected static void rethrowAsSystemException(String context, Transaction tx, Throwable t)
@@ -353,9 +363,9 @@
       Transaction tx = tm.getTransaction();
       if (tx != null)
       {
-         int status = tx.getStatus();
+         Integer status = Integer.valueOf(tx.getStatus());
          // Only allow states that will actually succeed
-         if (status != Status.STATUS_ACTIVE && status != Status.STATUS_PREPARING && status != Status.STATUS_PREPARED && status != Status.STATUS_COMMITTING)
+         if (!SUCCEED_STATUS.containsKey(status))
          {
             if (status == Status.STATUS_MARKED_ROLLBACK && IGNORE_STATUS_MARKED_FOR_ROLLBACK)
                ;  // allow database access even though transaction is marked to fail 



More information about the jboss-cvs-commits mailing list