killbill-memoizeit

util: fix connection leak in MySqlGlobalLocker We were leaking

10/17/2012 6:49:56 PM

Details

diff --git a/util/src/main/java/com/ning/billing/util/globallocker/MySqlGlobalLocker.java b/util/src/main/java/com/ning/billing/util/globallocker/MySqlGlobalLocker.java
index 248aeef..a819a43 100644
--- a/util/src/main/java/com/ning/billing/util/globallocker/MySqlGlobalLocker.java
+++ b/util/src/main/java/com/ning/billing/util/globallocker/MySqlGlobalLocker.java
@@ -58,7 +58,6 @@ public class MySqlGlobalLocker implements GlobalLocker {
     }
 
     private GlobalLock lock(final String lockName) throws LockFailedException {
-
         final Handle h = dbi.open();
         final MySqlGlobalLockerDao dao = h.attach(MySqlGlobalLockerDao.class);
 
@@ -70,13 +69,13 @@ public class MySqlGlobalLocker implements GlobalLocker {
                     try {
                         dao.releaseLock(lockName);
                     } finally {
-                        if (h != null) {
-                            h.close();
-                        }
+                        h.close();
                     }
                 }
             };
         } else {
+            // Make sure to close the handle if we couldn't obtain the lock (otherwise we would leak connections)
+            h.close();
             return null;
         }
     }