diff --git hcatalog/streaming/src/test/sit hcatalog/streaming/src/test/sit
index 71f1589..38cc352 100644
--- hcatalog/streaming/src/test/sit
+++ hcatalog/streaming/src/test/sit
@@ -33,7 +33,7 @@ for jar in ${HIVE_HOME}/hcatalog/share/hcatalog/*.jar
CLASSPATH=${CLASSPATH}:$jar
done
-CLASSPATH=${CLASSPATH}:${HADOOP_HOME}/conf
+CLASSPATH=${CLASSPATH}:${HADOOP_HOME}/etc/hadoop
CLASSPATH=${CLASSPATH}:${HIVE_HOME}/conf
$JAVA_HOME/bin/java -cp ${CLASSPATH} org.apache.hive.hcatalog.streaming.StreamingIntegrationTester $@
diff --git metastore/pom.xml metastore/pom.xml
index dbc3f0d..61d4ddb 100644
--- metastore/pom.xml
+++ metastore/pom.xml
@@ -92,6 +92,16 @@
${datanucleus-rdbms.version}
+ commons-pool
+ commons-pool
+ ${commons-pool.version}
+
+
+ commons-dbcp
+ commons-dbcp
+ ${commons-dbcp.version}
+
+
javax.jdo
jdo-api
${jdo-api.version}
diff --git metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
index 412eb28..3982349 100644
--- metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
+++ metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
@@ -17,17 +17,24 @@
*/
package org.apache.hadoop.hive.metastore.txn;
-import com.jolbox.bonecp.BoneCP;
import com.jolbox.bonecp.BoneCPConfig;
+import com.jolbox.bonecp.BoneCPDataSource;
+import org.apache.commons.dbcp.ConnectionFactory;
+import org.apache.commons.dbcp.DriverManagerConnectionFactory;
+import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.commons.dbcp.PoolingDataSource;
+import org.apache.commons.pool.ObjectPool;
+import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.hadoop.hive.common.ValidTxnList;
import org.apache.hadoop.hive.common.ValidTxnListImpl;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.api.*;
import org.apache.hadoop.util.StringUtils;
+import javax.sql.DataSource;
import java.sql.*;
import java.util.*;
@@ -65,7 +72,7 @@
static final private int ALLOWED_REPEATED_DEADLOCKS = 5;
static final private Log LOG = LogFactory.getLog(TxnHandler.class.getName());
- static private BoneCP connPool;
+ static private DataSource connPool;
private static Boolean lockLock = new Boolean("true"); // Random object to lock on for the lock
// method
@@ -1521,14 +1528,28 @@ private static synchronized void setupJdbcConnectionPool(HiveConf conf) throws S
String driverUrl = HiveConf.getVar(conf, HiveConf.ConfVars.METASTORECONNECTURLKEY);
String user = HiveConf.getVar(conf, HiveConf.ConfVars.METASTORE_CONNECTION_USER_NAME);
String passwd = HiveConf.getVar(conf, HiveConf.ConfVars.METASTOREPWD);
-
- BoneCPConfig config = new BoneCPConfig();
- config.setJdbcUrl(driverUrl);
- config.setMaxConnectionsPerPartition(10);
- config.setPartitionCount(1);
- config.setUser(user);
- config.setPassword(passwd);
- connPool = new BoneCP(config);
+ String connectionPooler = HiveConf.getVar(conf,
+ HiveConf.ConfVars.METASTORE_CONNECTION_POOLING_TYPE).toLowerCase();
+
+ if ("bonecp".equals(connectionPooler)) {
+ BoneCPConfig config = new BoneCPConfig();
+ config.setJdbcUrl(driverUrl);
+ config.setMaxConnectionsPerPartition(10);
+ config.setPartitionCount(1);
+ config.setUser(user);
+ config.setPassword(passwd);
+ connPool = new BoneCPDataSource(config);
+ } else if ("dbcp".equals(connectionPooler)) {
+ ObjectPool objectPool = new GenericObjectPool();
+ ConnectionFactory connFactory = new DriverManagerConnectionFactory(driverUrl, user, passwd);
+ // This doesn't get used, but it's still necessary, see
+ // http://svn.apache.org/viewvc/commons/proper/dbcp/branches/DBCP_1_4_x_BRANCH/doc/ManualPoolingDataSourceExample.java?view=markup
+ PoolableConnectionFactory poolConnFactory =
+ new PoolableConnectionFactory(connFactory, objectPool, null, null, false, true);
+ connPool = new PoolingDataSource(objectPool);
+ } else {
+ throw new RuntimeException("Unknown JDBC connection pooling " + connectionPooler);
+ }
}
private static synchronized void buildJumpTable() {
diff --git pom.xml pom.xml
index b82deb5..d5cfd34 100644
--- pom.xml
+++ pom.xml
@@ -104,6 +104,8 @@
2.4
3.1
1.1.3
+ 1.5.4
+ 1.4
10.10.1.1
11.0.2
2.1.6