private void clearLocksAndHB() throws LockException { lockMgr.clearLocalLockRecords(); stopHeartbeat(); }
@Override public void rollbackTxn() throws LockException { if (!isTxnOpen()) { throw new RuntimeException("Attempt to rollback before opening a transaction"); } try { lockMgr.clearLocalLockRecords(); stopHeartbeat(); LOG.debug("Rolling back " + JavaUtils.txnIdToString(txnId)); getMS().rollbackTxn(txnId); } catch (NoSuchTxnException e) { LOG.error("Metastore could not find " + JavaUtils.txnIdToString(txnId)); throw new LockException(e, ErrorMsg.TXN_NO_SUCH_TRANSACTION, JavaUtils.txnIdToString(txnId)); } catch(TxnAbortedException e) { throw new LockException(e, ErrorMsg.TXN_ABORTED, JavaUtils.txnIdToString(txnId)); } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); } finally { txnId = 0; stmtId = -1; numStatements = 0; tableWriteIds.clear(); } }
@Override public void rollbackTxn() throws LockException { if (!isTxnOpen()) { throw new RuntimeException("Attempt to rollback before opening a transaction"); } try { lockMgr.clearLocalLockRecords(); stopHeartbeat(); LOG.debug("Rolling back " + JavaUtils.txnIdToString(txnId)); getMS().rollbackTxn(txnId); } catch (NoSuchTxnException e) { LOG.error("Metastore could not find " + JavaUtils.txnIdToString(txnId)); throw new LockException(e, ErrorMsg.TXN_NO_SUCH_TRANSACTION, JavaUtils.txnIdToString(txnId)); } catch(TxnAbortedException e) { throw new LockException(e, ErrorMsg.TXN_ABORTED, JavaUtils.txnIdToString(txnId)); } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); } finally { txnId = 0; statementId = -1; } }
@Override public void commitTxn() throws LockException { if (!isTxnOpen()) { throw new RuntimeException("Attempt to commit before opening a transaction"); } try { lockMgr.clearLocalLockRecords(); stopHeartbeat(); LOG.debug("Committing txn " + JavaUtils.txnIdToString(txnId)); getMS().commitTxn(txnId); } catch (NoSuchTxnException e) { LOG.error("Metastore could not find " + JavaUtils.txnIdToString(txnId)); throw new LockException(e, ErrorMsg.TXN_NO_SUCH_TRANSACTION, JavaUtils.txnIdToString(txnId)); } catch (TxnAbortedException e) { LockException le = new LockException(e, ErrorMsg.TXN_ABORTED, JavaUtils.txnIdToString(txnId), e.getMessage()); LOG.error(le.getMessage()); throw le; } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); } finally { txnId = 0; statementId = -1; } }
private void testLockExpiration(HiveTxnManager txnMgr, int numLocksBefore, boolean shouldExpire) throws Exception { DbLockManager lockManager = (DbLockManager)txnMgr.getLockManager(); ShowLocksResponse resp = lockManager.getLocks(); Assert.assertEquals("Wrong number of locks before expire", numLocksBefore, resp.getLocks().size()); Thread.sleep(HiveConf.getTimeVar(conf, HiveConf.ConfVars.HIVE_TXN_TIMEOUT, TimeUnit.MILLISECONDS)); runReaper(); resp = lockManager.getLocks(); if (shouldExpire) { Assert.assertEquals("Expected all locks to expire", 0, resp.getLocks().size()); lockManager.clearLocalLockRecords(); } else { Assert.assertEquals("No lock should expire because there is heartbeating", numLocksBefore, resp.getLocks().size()); } }
@Override public void rollbackTxn() throws LockException { if (txnId == 0) { throw new RuntimeException("Attempt to rollback before opening a " + "transaction"); } try { lockMgr.clearLocalLockRecords(); LOG.debug("Rolling back txn " + txnId); client.rollbackTxn(txnId); } catch (NoSuchTxnException e) { LOG.error("Metastore could not find txn " + txnId); throw new LockException(ErrorMsg.TXN_NO_SUCH_TRANSACTION.getMsg() , e); } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); } finally { txnId = 0; } }
@Override public void commitTxn() throws LockException { if (txnId == 0) { throw new RuntimeException("Attempt to commit before opening a " + "transaction"); } try { lockMgr.clearLocalLockRecords(); LOG.debug("Committing txn " + txnId); client.commitTxn(txnId); } catch (NoSuchTxnException e) { LOG.error("Metastore could not find txn " + txnId); throw new LockException(ErrorMsg.TXN_NO_SUCH_TRANSACTION.getMsg() , e); } catch (TxnAbortedException e) { LOG.error("Transaction " + txnId + " aborted"); throw new LockException(ErrorMsg.TXN_ABORTED.getMsg(), e); } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); } finally { txnId = 0; } }