[jboss-cvs] JBossAS SVN: r110062 - trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Dec 21 04:51:10 EST 2010
Author: jesper.pedersen
Date: 2010-12-21 04:51:09 -0500 (Tue, 21 Dec 2010)
New Revision: 110062
Modified:
trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/WrappedConnection.java
Log:
[JBAS-8763] Potential dead lock
Modified: trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
===================================================================
--- trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2010-12-21 09:45:37 UTC (rev 110061)
+++ trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2010-12-21 09:51:09 UTC (rev 110062)
@@ -75,7 +75,7 @@
private final boolean readOnly;
- private ReentrantLock lock = new ReentrantLock();
+ private ReentrantLock lock = new ReentrantLock(true);
private final Collection cels = new ArrayList();
@@ -245,7 +245,7 @@
// because it looks too nasty to expect the connection handle
// to unlock properly in certain race conditions
// where the dissociation of the managed connection is "random".
- lock = new ReentrantLock();
+ lock = new ReentrantLock(true);
}
protected void lock()
@@ -275,7 +275,8 @@
protected void unlock()
{
- lock.unlock();
+ if (lock.isHeldByCurrentThread())
+ lock.unlock();
}
public Object getConnection(Subject subject, ConnectionRequestInfo cri) throws ResourceException
Modified: trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/WrappedConnection.java
===================================================================
--- trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2010-12-21 09:45:37 UTC (rev 110061)
+++ trunk/connector/src/main/java/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2010-12-21 09:51:09 UTC (rev 110062)
@@ -82,9 +82,8 @@
{
mc.tryLock();
if (lockedMC == null)
- {
lockedMC = mc ;
- }
+
lockCount++ ;
}
else
@@ -95,10 +94,10 @@
{
BaseWrapperManagedConnection mc = lockedMC;
if (--lockCount == 0)
- {
lockedMC = null;
- }
- mc.unlock();
+
+ if (mc != null)
+ mc.unlock();
}
public WrapperDataSource getDataSource()
More information about the jboss-cvs-commits
mailing list