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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 2 11:44:17 EDT 2010


Author: jesper.pedersen
Date: 2010-08-02 11:44:16 -0400 (Mon, 02 Aug 2010)
New Revision: 107265

Modified:
   branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
   branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
   branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
Log:
[JBPAPP-2845] Lazy initialization fix

Modified: branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-08-02 15:28:38 UTC (rev 107264)
+++ branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-08-02 15:44:16 UTC (rev 107265)
@@ -84,6 +84,9 @@
 
    /** Whether trace is enabled */
    private final boolean trace;
+   
+   /** The subpool */
+   private JBossManagedConnectionPool.SubPoolContext subPoolContext;
 
    /** Stats */
    private final Counter connectionCounter = new Counter();
@@ -110,7 +113,8 @@
     * @param log the log
     */
    protected InternalManagedConnectionPool(ManagedConnectionFactory mcf, ConnectionListenerFactory clf,
-         Subject subject, ConnectionRequestInfo cri, PoolParams poolParams, Logger log)
+                                           Subject subject, ConnectionRequestInfo cri, PoolParams poolParams, 
+                                           JBossManagedConnectionPool.SubPoolContext subPoolContext, Logger log)
    {
       this.mcf = mcf;
       this.clf = clf;
@@ -120,6 +124,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);
@@ -765,6 +770,11 @@
       return poolParams.minSize;
    }
 
+   public JBossManagedConnectionPool.SubPoolContext getSubPoolContext()
+   {
+      return subPoolContext;
+   }
+
    public static class PoolParams
    {
       public int minSize = 0;

Modified: branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2010-08-02 15:28:38 UTC (rev 107264)
+++ branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2010-08-02 15:44:16 UTC (rev 107265)
@@ -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, this, log);
          if (tm != null)
             trackByTx = new TransactionLocal(tm);
       }

Modified: branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-08-02 15:28:38 UTC (rev 107264)
+++ branches/JBPAPP_4_2_0_GA_CP/connector/src/main/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-08-02 15:44:16 UTC (rev 107265)
@@ -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;
@@ -341,6 +342,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