[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