[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