diff --git a/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java b/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
index 33226cf..bc1d2b9 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
@@ -20,6 +20,8 @@ package org.killbill.billing.util.glue;
import java.io.IOException;
+import javax.sql.DataSource;
+
import org.killbill.billing.platform.api.KillbillConfigSource;
import org.killbill.commons.embeddeddb.EmbeddedDB;
import org.killbill.commons.locker.GlobalLocker;
@@ -37,9 +39,10 @@ public class GlobalLockerModule extends KillBillModule {
@Provides
@Singleton
- protected GlobalLocker provideGlobalLocker(final EmbeddedDB embeddedDB) throws IOException {
+ // Note: we need to inject the pooled DataSource here, not the (direct) one from EmbeddedDB
+ protected GlobalLocker provideGlobalLocker(final DataSource dataSource, final EmbeddedDB embeddedDB) throws IOException {
if (EmbeddedDB.DBEngine.MYSQL.equals(embeddedDB.getDBEngine())) {
- return new MySqlGlobalLocker(embeddedDB.getDataSource());
+ return new MySqlGlobalLocker(dataSource);
} else {
return new MemoryGlobalLocker();
}
diff --git a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
index da08e66..17e8dfb 100644
--- a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -96,6 +96,7 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
} else {
Assert.assertTrue(locker instanceof MemoryGlobalLocker);
}
+ Assert.assertTrue(locker.isFree("a", "b"));
}
@Override