[jboss-cvs] JBossAS SVN: r110050 - branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/adapter/jdbc.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Dec 20 13:55:02 EST 2010
Author: weston.price at jboss.com
Date: 2010-12-20 13:55:02 -0500 (Mon, 20 Dec 2010)
New Revision: 110050
Modified:
branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
Log:
[JBPAPP-5596] Fixed issue for JCA deadlock in WrappedConnection. Applied patch provided in JIRA task submitted by Kevin Connor to
Modified: branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
===================================================================
--- branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2010-12-20 17:47:47 UTC (rev 110049)
+++ branches/JBPAPP_5_1/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2010-12-20 18:55:02 UTC (rev 110050)
@@ -49,7 +49,9 @@
{
private static final Logger log = Logger.getLogger(WrappedConnection.class);
- private BaseWrapperManagedConnection mc;
+ private volatile BaseWrapperManagedConnection mc;
+ private BaseWrapperManagedConnection lockedMC;
+ private int lockCount;
private WrapperDataSource dataSource;
@@ -77,18 +79,26 @@
{
BaseWrapperManagedConnection mc = this.mc;
if (mc != null)
+ {
mc.tryLock();
+ if (lockedMC == null)
+ {
+ lockedMC = mc ;
+ }
+ lockCount++ ;
+ }
else
throw new SQLException("Connection is not associated with a managed connection." + this);
}
protected void unlock()
{
- BaseWrapperManagedConnection mc = this.mc;
- if (mc != null)
- mc.unlock();
- // We recreate the lock when returned to the pool
- // so missing the unlock after disassociation is not important
+ BaseWrapperManagedConnection mc = lockedMC;
+ if (--lockCount == 0)
+ {
+ lockedMC = null;
+ }
+ mc.unlock();
}
public WrapperDataSource getDataSource()
More information about the jboss-cvs-commits
mailing list