[jboss-cvs] JBossAS SVN: r111128 - in branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596: connector/src/main/org/jboss/resource/adapter/jdbc and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 7 21:24:02 EDT 2011


Author: jbertram at redhat.com
Date: 2011-04-07 21:24:01 -0400 (Thu, 07 Apr 2011)
New Revision: 111128

Modified:
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsManagedConnection.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsSession.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/testsuite/src/main/org/jboss/test/util/mbean/
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationCapability.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationCause.java
   branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationPolicy.java
Log:
JBPAPP-6269


Property changes on: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596
___________________________________________________________________
Added: svn:mergeinfo
   + /branches/JBPAPP_4_2_0_GA_CP:110061,110065

Modified: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
===================================================================
--- branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java	2011-04-08 00:54:29 UTC (rev 111127)
+++ branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java	2011-04-08 01:24:01 UTC (rev 111128)
@@ -68,7 +68,7 @@
    private final int transactionIsolation;
    private final boolean readOnly;
 
-   private ReentrantLock lock = new ReentrantLock();
+   private ReentrantLock lock = new ReentrantLock(true);
    
    private final Collection cels = new ArrayList();
    private final Set handles = new HashSet();
@@ -202,7 +202,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);
       }
    }
 
@@ -276,7 +276,8 @@
    
    protected void unlock()
    {
-      lock.unlock();
+      if (lock.isHeldByCurrentThread())
+         lock.unlock();
    }
    
    void closeHandle(WrappedConnection handle)

Modified: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
===================================================================
--- branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java	2011-04-08 00:54:29 UTC (rev 111127)
+++ branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java	2011-04-08 01:24:01 UTC (rev 111128)
@@ -50,7 +50,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;
    
@@ -78,18 +80,25 @@
    {
       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;
+      BaseWrapperManagedConnection mc = this.lockedMC;
+      if (--lockCount == 0)
+         lockedMC = null;
+
       if (mc != null)
          mc.unlock();
-      // We recreate the lock when returned to the pool
-      // so missing the unlock after disassociation is not important
    }
    
    public WrapperDataSource getDataSource()

Modified: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsManagedConnection.java
===================================================================
--- branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsManagedConnection.java	2011-04-08 00:54:29 UTC (rev 111127)
+++ branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsManagedConnection.java	2011-04-08 01:24:01 UTC (rev 111128)
@@ -144,7 +144,7 @@
    private String pwd;
    private boolean isDestroyed;
 
-   private ReentrantLock lock = new ReentrantLock();
+   private ReentrantLock lock = new ReentrantLock(true);
    
    // Physical JMS connection stuff
    private Connection con;
@@ -342,7 +342,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);
       
    }
 
@@ -398,7 +398,8 @@
    
    protected void unlock()
    {
-      lock.unlock();
+      if (lock.isHeldByCurrentThread())
+         lock.unlock();
    }
 
    /**

Modified: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsSession.java
===================================================================
--- branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsSession.java	2011-04-08 00:54:29 UTC (rev 111127)
+++ branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/connector/src/main/org/jboss/resource/adapter/jms/JmsSession.java	2011-04-08 01:24:01 UTC (rev 111128)
@@ -67,7 +67,9 @@
    private static final Logger log = Logger.getLogger(JmsSession.class);
 
    /** The managed connection for this session. */
-   private JmsManagedConnection mc; // = null;
+   private volatile JmsManagedConnection mc;
+   private JmsManagedConnection lockedMC;
+   private int lockCount;
 
    /** The connection request info */
    private JmsConnectionRequestInfo info;
@@ -106,7 +108,14 @@
    {
       JmsManagedConnection mc = this.mc;
       if (mc != null)
+      {
          mc.tryLock();
+
+         if (lockedMC == null)
+            lockedMC = mc;
+
+         lockCount++;
+      }
       else
          throw new IllegalStateException("Connection is not associated with a managed connection. " + this);
    }
@@ -114,10 +123,11 @@
    protected void unlock()
    {
       JmsManagedConnection mc = this.mc;
+      if (--lockCount == 0)
+         lockedMC = null;
+
       if (mc != null)
          mc.unlock();
-      // We recreate the lock when returned to the pool
-      // so missing the unlock after disassociation is not important
    }
    
    /**


Property changes on: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/testsuite/src/main/org/jboss/test/util/mbean
___________________________________________________________________
Deleted: svn:mergeinfo
   - 


Property changes on: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationCapability.java
___________________________________________________________________
Deleted: svn:mergeinfo
   - 


Property changes on: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationCause.java
___________________________________________________________________
Deleted: svn:mergeinfo
   - 


Property changes on: branches/JBPAPP_4_3_0_GA_CP03_JBPAPP-5596/tomcat/src/main/org/jboss/web/tomcat/service/session/notification/ClusteredSessionNotificationPolicy.java
___________________________________________________________________
Deleted: svn:mergeinfo
   - 



More information about the jboss-cvs-commits mailing list