killbill-memoizeit
Changes
pom.xml 8(+7 -1)
util/pom.xml 4(+4 -0)
Details
pom.xml 8(+7 -1)
diff --git a/pom.xml b/pom.xml
index f7bcf1e..98c8388 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,8 @@
~ under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
@@ -274,6 +275,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>com.mchange</groupId>
+ <artifactId>c3p0</artifactId>
+ <version>0.9.2</version>
+ </dependency>
+ <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.0.0</version>
diff --git a/server/src/main/java/com/ning/billing/server/modules/DBIProvider.java b/server/src/main/java/com/ning/billing/server/modules/DBIProvider.java
index e67b929..5d86c2b 100644
--- a/server/src/main/java/com/ning/billing/server/modules/DBIProvider.java
+++ b/server/src/main/java/com/ning/billing/server/modules/DBIProvider.java
@@ -18,6 +18,8 @@ package com.ning.billing.server.modules;
import java.util.concurrent.TimeUnit;
+import javax.sql.DataSource;
+
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.TimingCollector;
import org.skife.jdbi.v2.tweak.SQLLog;
@@ -37,6 +39,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
+import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.yammer.metrics.core.MetricsRegistry;
import com.yammer.metrics.jdbi.InstrumentedTimingCollector;
import com.yammer.metrics.jdbi.strategies.BasicSqlNameStrategy;
@@ -62,21 +65,8 @@ public class DBIProvider implements Provider<DBI> {
@Override
public DBI get() {
- final BoneCPConfig dbConfig = new BoneCPConfig();
- dbConfig.setJdbcUrl(config.getJdbcUrl());
- dbConfig.setUsername(config.getUsername());
- dbConfig.setPassword(config.getPassword());
- dbConfig.setMinConnectionsPerPartition(config.getMinIdle());
- dbConfig.setMaxConnectionsPerPartition(config.getMaxActive());
- dbConfig.setConnectionTimeout(config.getConnectionTimeout().getPeriod(), config.getConnectionTimeout().getUnit());
- dbConfig.setIdleMaxAge(config.getIdleMaxAge().getPeriod(), config.getIdleMaxAge().getUnit());
- dbConfig.setMaxConnectionAge(config.getMaxConnectionAge().getPeriod(), config.getMaxConnectionAge().getUnit());
- dbConfig.setIdleConnectionTestPeriod(config.getIdleConnectionTestPeriod().getPeriod(), config.getIdleConnectionTestPeriod().getUnit());
- dbConfig.setPartitionCount(1);
- dbConfig.setDefaultTransactionIsolation("READ_COMMITTED");
- dbConfig.setDisableJMX(false);
- final BoneCPDataSource ds = new BoneCPDataSource(dbConfig);
+ final DataSource ds = getC3P0DataSource();
final DBI dbi = new DBI(ds);
dbi.registerArgumentFactory(new UUIDArgumentFactory());
dbi.registerArgumentFactory(new DateTimeZoneArgumentFactory());
@@ -104,4 +94,33 @@ public class DBIProvider implements Provider<DBI> {
return dbi;
}
+
+
+ private DataSource getBoneCPDatSource() {
+ final BoneCPConfig dbConfig = new BoneCPConfig();
+ dbConfig.setJdbcUrl(config.getJdbcUrl());
+ dbConfig.setUsername(config.getUsername());
+ dbConfig.setPassword(config.getPassword());
+ dbConfig.setMinConnectionsPerPartition(config.getMinIdle());
+ dbConfig.setMaxConnectionsPerPartition(config.getMaxActive());
+ dbConfig.setConnectionTimeout(config.getConnectionTimeout().getPeriod(), config.getConnectionTimeout().getUnit());
+ dbConfig.setIdleMaxAge(config.getIdleMaxAge().getPeriod(), config.getIdleMaxAge().getUnit());
+ dbConfig.setMaxConnectionAge(config.getMaxConnectionAge().getPeriod(), config.getMaxConnectionAge().getUnit());
+ dbConfig.setIdleConnectionTestPeriod(config.getIdleConnectionTestPeriod().getPeriod(), config.getIdleConnectionTestPeriod().getUnit());
+ dbConfig.setPartitionCount(1);
+ dbConfig.setDisableJMX(false);
+
+ final BoneCPDataSource ds = new BoneCPDataSource(dbConfig);
+ return ds;
+ }
+
+ private DataSource getC3P0DataSource() {
+ ComboPooledDataSource cpds = new ComboPooledDataSource();
+ cpds.setJdbcUrl(config.getJdbcUrl());
+ cpds.setUser(config.getUsername());
+ cpds.setPassword(config.getPassword());
+ cpds.setMinPoolSize(1);
+ cpds.setMaxPoolSize(10);
+ return cpds;
+ }
}
util/pom.xml 4(+4 -0)
diff --git a/util/pom.xml b/util/pom.xml
index 4905af0..628050b 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -34,6 +34,10 @@
<artifactId>bonecp</artifactId>
</dependency>
<dependency>
+ <groupId>com.mchange</groupId>
+ <artifactId>c3p0</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.jdbi</groupId>
<artifactId>jdbi</artifactId>
</dependency>
diff --git a/util/src/main/java/com/ning/billing/util/bus/PersistentInternalBus.java b/util/src/main/java/com/ning/billing/util/bus/PersistentInternalBus.java
index f2fa6ab..cc8d4b0 100644
--- a/util/src/main/java/com/ning/billing/util/bus/PersistentInternalBus.java
+++ b/util/src/main/java/com/ning/billing/util/bus/PersistentInternalBus.java
@@ -24,6 +24,7 @@ import java.util.concurrent.ThreadFactory;
import org.skife.jdbi.v2.IDBI;
import org.skife.jdbi.v2.Transaction;
+import org.skife.jdbi.v2.TransactionIsolationLevel;
import org.skife.jdbi.v2.TransactionStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -171,7 +172,7 @@ public class PersistentInternalBus extends PersistentQueueBase implements Intern
@Override
public void post(final BusInternalEvent event, final InternalCallContext context) throws EventBusException {
- dao.inTransaction(new Transaction<Void, PersistentBusSqlDao>() {
+ dao.inTransaction(TransactionIsolationLevel.READ_COMMITTED, new Transaction<Void, PersistentBusSqlDao>() {
@Override
public Void inTransaction(final PersistentBusSqlDao transactional,
final TransactionStatus status) throws Exception {
diff --git a/util/src/main/java/com/ning/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java b/util/src/main/java/com/ning/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
index 35098ca..9b6933b 100644
--- a/util/src/main/java/com/ning/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
+++ b/util/src/main/java/com/ning/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
@@ -18,6 +18,7 @@ package com.ning.billing.util.entity.dao;
import org.skife.jdbi.v2.IDBI;
import org.skife.jdbi.v2.Transaction;
+import org.skife.jdbi.v2.TransactionIsolationLevel;
import org.skife.jdbi.v2.TransactionStatus;
import com.ning.billing.util.cache.CacheControllerDispatcher;
@@ -67,6 +68,6 @@ public class EntitySqlDaoTransactionalJdbiWrapper {
*/
public <ReturnType> ReturnType execute(final EntitySqlDaoTransactionWrapper<ReturnType> entitySqlDaoTransactionWrapper) {
final EntitySqlDao<EntityModelDao<Entity>, Entity> entitySqlDao = dbi.onDemand(InitialEntitySqlDao.class);
- return entitySqlDao.inTransaction(new JdbiTransaction<ReturnType, EntityModelDao<Entity>, Entity>(entitySqlDaoTransactionWrapper));
+ return entitySqlDao.inTransaction(TransactionIsolationLevel.READ_COMMITTED, new JdbiTransaction<ReturnType, EntityModelDao<Entity>, Entity>(entitySqlDaoTransactionWrapper));
}
}
diff --git a/util/src/test/java/com/ning/billing/dbi/DBIProvider.java b/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
index b66f87d..a54ee30 100644
--- a/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
+++ b/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
@@ -18,6 +18,8 @@ package com.ning.billing.dbi;
import java.util.concurrent.TimeUnit;
+import javax.sql.DataSource;
+
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.IDBI;
import org.skife.jdbi.v2.tweak.transactions.SerializableTransactionRunner;
@@ -33,38 +35,28 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
+import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBIProvider implements Provider<IDBI> {
- private final BoneCPConfig dbConfig;
+ private final String jdbcUri;
+ private final String userName;
+ private final String userPwd;
@Inject
public DBIProvider(final DbiConfig config) {
this(config.getJdbcUrl(), config.getUsername(), config.getPassword());
}
- public DBIProvider(final String dbiString, final String userName, final String pwd) {
- this.dbConfig = createConfig(dbiString, userName, pwd);
- }
-
- BoneCPConfig createConfig(final String dbiString, final String userName, final String pwd) {
- final BoneCPConfig dbConfig = new BoneCPConfig();
- dbConfig.setJdbcUrl(dbiString);
- dbConfig.setUsername(userName);
- dbConfig.setPassword(pwd);
- dbConfig.setMinConnectionsPerPartition(1);
- dbConfig.setMaxConnectionsPerPartition(30);
- dbConfig.setConnectionTimeout(10, TimeUnit.SECONDS);
- dbConfig.setPartitionCount(1);
- dbConfig.setDefaultTransactionIsolation("REPEATABLE_READ");
- dbConfig.setDisableJMX(false);
- dbConfig.setLazyInit(true);
- return dbConfig;
+ public DBIProvider(final String jdbcUri, final String userName, final String userPwd) {
+ this.jdbcUri = jdbcUri;
+ this.userName = userName;
+ this.userPwd = userPwd;
}
@Override
public IDBI get() {
- final BoneCPDataSource ds = new BoneCPDataSource(dbConfig);
+ final DataSource ds = getC3P0DataSource();
final DBI dbi = new DBI(ds);
dbi.registerArgumentFactory(new UUIDArgumentFactory());
dbi.registerArgumentFactory(new DateTimeZoneArgumentFactory());
@@ -80,4 +72,29 @@ public class DBIProvider implements Provider<IDBI> {
return dbi;
}
+
+
+
+ private DataSource getBoneCPDatSource() {
+ final BoneCPConfig dbConfig = new BoneCPConfig();
+ dbConfig.setJdbcUrl(jdbcUri);
+ dbConfig.setUsername(userName);
+ dbConfig.setPassword(userPwd);
+ dbConfig.setPartitionCount(1);
+ //dbConfig.setDefaultTransactionIsolation("READ_COMMITTED");
+ dbConfig.setDisableJMX(false);
+
+ final BoneCPDataSource ds = new BoneCPDataSource(dbConfig);
+ return ds;
+ }
+
+ private DataSource getC3P0DataSource() {
+ ComboPooledDataSource cpds = new ComboPooledDataSource();
+ cpds.setJdbcUrl(jdbcUri);
+ cpds.setUser(userName);
+ cpds.setPassword(userPwd);
+ cpds.setMinPoolSize(1);
+ cpds.setMaxPoolSize(10);
+ return cpds;
+ }
}