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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 24 14:22:31 EDT 2009


Author: vicky.kak at jboss.com
Date: 2009-09-24 14:22:30 -0400 (Thu, 24 Sep 2009)
New Revision: 94001

Modified:
   branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
   branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
   branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
Log:
Fix for JBPAPP-2845.

Modified: branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2009-09-24 18:01:39 UTC (rev 94000)
+++ branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2009-09-24 18:22:30 UTC (rev 94001)
@@ -84,6 +84,9 @@
 
    /** Whether trace is enabled */
    private final boolean trace;
+   
+   /** The SubPool context to which this pool is mapped to */
+   private JBossManagedConnectionPool.SubPoolContext subPoolContext;
 
    /** Stats */
    private final Counter connectionCounter = new Counter();
@@ -110,7 +113,7 @@
     * @param log the log
     */
    protected InternalManagedConnectionPool(ManagedConnectionFactory mcf, ConnectionListenerFactory clf,
-         Subject subject, ConnectionRequestInfo cri, PoolParams poolParams, Logger log)
+         Subject subject, ConnectionRequestInfo cri, PoolParams poolParams, Logger log, JBossManagedConnectionPool.SubPoolContext subPoolContext)
    {
       this.mcf = mcf;
       this.clf = clf;
@@ -120,6 +123,7 @@
       this.maxSize = this.poolParams.maxSize;
       
       this.log = log;
+      this.subPoolContext = subPoolContext;
       this.trace = log.isTraceEnabled();
       cls = new ArrayList(this.maxSize);
       permits = new FIFOSemaphore(this.maxSize);
@@ -756,6 +760,11 @@
       return poolParams.minSize;
    }
 
+   public JBossManagedConnectionPool.SubPoolContext getSubPoolContext()
+   {
+	   return subPoolContext;
+   }
+   
    public static class PoolParams
    {
       public int minSize = 0;

Modified: branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
===================================================================
--- branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2009-09-24 18:01:39 UTC (rev 94000)
+++ branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2009-09-24 18:22:30 UTC (rev 94001)
@@ -369,7 +369,7 @@
       public SubPoolContext(TransactionManager tm, ManagedConnectionFactory mcf, ConnectionListenerFactory clf,
             Subject subject, ConnectionRequestInfo cri, PoolParams poolParams, Logger log)
       {
-         subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams, log);
+         subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams, log, this);
          if (tm != null)
             trackByTx = new TransactionLocal(tm);
       }

Modified: branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
===================================================================
--- branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2009-09-24 18:01:39 UTC (rev 94000)
+++ branches/JBPAPP_4_2/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2009-09-24 18:22:30 UTC (rev 94001)
@@ -50,6 +50,7 @@
 import org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapper;
 import org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapperFactory;
 import org.jboss.tm.LastResource;
+import org.jboss.tm.TransactionLocal;
 import org.jboss.tm.TransactionTimeoutConfiguration;
 import org.jboss.tm.TxUtils;
 import org.jboss.util.NestedRuntimeException;
@@ -326,6 +327,29 @@
          {
             cls.add(cl);
             cl.enlist();
+            if(trackConnectionByTx)
+            {
+            	cl.setTrackByTx(true);
+            	InternalManagedConnectionPool imcp = (InternalManagedConnectionPool)cl.getContext();
+            	JBossManagedConnectionPool.SubPoolContext subPool = imcp.getSubPoolContext();
+            	TransactionLocal trackByTx = subPool.getTrackByTx();
+            	try
+            	{
+            		trackByTx.lock();
+            	}
+            	catch (Throwable t)
+                {
+            		rethrowAsSystemException("Unable to begin transaction with JCA lazy enlistment scenario", trackByTx.getTransaction(), t);
+                }            	
+            	try
+            	{
+            		trackByTx.set(cl);
+            	}
+            	finally
+            	{
+            		trackByTx.unlock();
+            	}
+            }
          }
       }
    }




More information about the jboss-cvs-commits mailing list