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 6f200f8..e280a5d 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,9 +72,9 @@ static final private int ALLOWED_REPEATED_DEADLOCKS = 5; static final private Log LOG = LogFactory.getLog(TxnHandler.class.getName()); - static private BoneCP connPool; - private static final Boolean lockLock = new Boolean("true"); // Random object to lock on for the - // lock method + static private DataSource connPool; + private static Boolean lockLock = new Boolean("true"); // Random object to lock on for the lock + // method /** * Number of consecutive deadlocks we have seen @@ -1523,14 +1530,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 99fe9d6..525ea25 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