Author: markt
Date: Tue Jun 19 09:29:10 2018
New Revision: 1833799

URL: http://svn.apache.org/viewvc?rev=1833799&view=rev
Log:
Fix [Find|Spot]Bugs locking warning

Modified:
    
tomcat/trunk/java/org/apache/tomcat/dbcp/dbcp2/managed/ManagedConnection.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/dbcp/dbcp2/managed/ManagedConnection.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/dbcp/dbcp2/managed/ManagedConnection.java?rev=1833799&r1=1833798&r2=1833799&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/dbcp/dbcp2/managed/ManagedConnection.java 
(original)
+++ 
tomcat/trunk/java/org/apache/tomcat/dbcp/dbcp2/managed/ManagedConnection.java 
Tue Jun 19 09:29:10 2018
@@ -174,21 +174,24 @@ public class ManagedConnection<C extends
     @Override
     public void close() throws SQLException {
         if (!isClosedInternal()) {
+            // Don't actually close the connection if in a transaction. The
+            // connection will be closed by the transactionComplete method.
+            //
+            // DBCP-484 we need to make sure setClosedInternal(true) being
+            // invoked if transactionContext is not null as this value will
+            // be modified by the transactionComplete method which could run
+            // in the different thread with the transaction calling back.
+            lock.lock();
             try {
-                // Don't actually close the connection if in a transaction. The
-                // connection will be closed by the transactionComplete method.
-                //
-                // DBCP-484 we need to make sure setClosedInternal(true) being
-                // invoked if transactionContext is not null as this value will
-                // be modified by the transactionComplete method which could 
run
-                // in the different thread with the transaction calling back.
-                lock.lock();
                 if (transactionContext == null || 
transactionContext.isTransactionComplete()) {
                     super.close();
                 }
             } finally {
-                setClosedInternal(true);
-                lock.unlock();
+                try {
+                    setClosedInternal(true);
+                } finally {
+                    lock.unlock();
+                }
             }
         }
     }
@@ -209,8 +212,11 @@ public class ManagedConnection<C extends
 
     protected void transactionComplete() {
         lock.lock();
-        transactionContext.completeTransaction();
-        lock.unlock();
+        try {
+            transactionContext.completeTransaction();
+        } finally {
+            lock.unlock();
+        }
 
         // If we were using a shared connection, clear the reference now that
         // the transaction has completed



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to