commit 3d4a0c38d8a4ccf8e6ef743be1e9fa7a20f844d9 Author: Alan Gates Date: Wed Nov 26 14:02:02 2014 -0800 HIVE-8326 Fixed initialization of DbTxnManager to check that concurrency was correctly set to true. diff --git ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 89775cc..f349187 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -388,6 +388,8 @@ TXN_NO_SUCH_TRANSACTION(10262, "No record of transaction could be found, " + "may have timed out"), TXN_ABORTED(10263, "Transaction manager has aborted the transaction."), + DBTXNMGR_REQUIRES_CONCURRENCY(10264, + "To use DbTxnManager you must set hive.support.concurrency=true"), LOCK_NO_SUCH_LOCK(10270, "No record of lock could be found, " + "may have timed out"), diff --git ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java index 46b441a..d11fabd 100644 --- ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java +++ ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.common.ValidTxnList; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.LockComponentBuilder; @@ -55,6 +56,14 @@ } @Override + void setHiveConf(HiveConf conf) { + super.setHiveConf(conf); + if (!conf.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY)) { + throw new RuntimeException(ErrorMsg.DBTXNMGR_REQUIRES_CONCURRENCY.getMsg()); + } + } + + @Override public long openTxn(String user) throws LockException { init(); try { diff --git ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager.java ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager.java index 8f593aa..1cd7c32 100644 --- ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager.java +++ ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager.java @@ -275,6 +275,21 @@ public void testDDLNoLock() throws Exception { Assert.assertNull(locks); } + @Test + public void concurrencyFalse() throws Exception { + HiveConf badConf = new HiveConf(); + badConf.setVar(HiveConf.ConfVars.HIVE_TXN_MANAGER, + "org.apache.hadoop.hive.ql.lockmgr.DbTxnManager"); + badConf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false); + boolean sawException = false; + try { + TxnManagerFactory.getTxnManagerFactory().getTxnManager(badConf); + } catch (RuntimeException e) { + sawException = true; + } + Assert.assertTrue(sawException); + } + @Before public void setUp() throws Exception {