diff --git hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java index baeafad..db9fd72 100644 --- hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java +++ hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java @@ -622,7 +622,7 @@ public Void run() throws TransactionError { private void beginNextTransactionImpl() throws TransactionError { state = TxnState.INACTIVE;//clear state from previous txn - if ( currentTxnIndex >= txnIds.size() ) + if ( currentTxnIndex + 1 >= txnIds.size() ) throw new InvalidTrasactionState("No more transactions available in" + " current batch for end point : " + endPt); ++currentTxnIndex; @@ -874,6 +874,7 @@ private void abortImpl(boolean abortAllRemaining) throws TransactionError, Strea currentTxnIndex < txnIds.size(); currentTxnIndex++) { msClient.rollbackTxn(txnIds.get(currentTxnIndex)); } + currentTxnIndex--;//since the loop left it == txnId.size() } else { if (getCurrentTxnId() > 0) { diff --git hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java index bde78e4..f4ee208 100644 --- hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java +++ hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java @@ -1714,6 +1714,8 @@ public void testErrorHandling() throws Exception { } catch(StreamingIOFailure ex) { expectedEx = ex; + txnBatch.getCurrentTransactionState(); + txnBatch.getCurrentTxnId();//test it doesn't throw ArrayIndexOutOfBounds... } Assert.assertTrue("Wrong exception: " + (expectedEx != null ? expectedEx.getMessage() : "?"), expectedEx != null && expectedEx.getMessage().contains("Simulated fault occurred")); diff --git metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java index 67e661f..ab7da68 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java @@ -30,6 +30,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -451,7 +452,7 @@ public void cleanEmptyAbortedTxns() throws MetaException { if(txnids.size() <= 0) { return; } - + Collections.sort(txnids);//easier to read logs List queries = new ArrayList(); StringBuilder prefix = new StringBuilder(); StringBuilder suffix = new StringBuilder(); 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 be3c6de..7cddc42 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -2344,6 +2344,7 @@ private void timeOutLocks(Connection dbConn, long now) { deletedLocks += stmt.executeUpdate(query); } if(deletedLocks > 0) { + Collections.sort(extLockIDs);////easier to read logs LOG.info("Deleted " + deletedLocks + " ext locks from HIVE_LOCKS due to timeout (vs. " + extLockIDs.size() + " found. List: " + extLockIDs + ") maxHeartbeatTime=" + maxHeartbeatTime); } @@ -2443,6 +2444,7 @@ public void performTimeOuts() { dbConn.commit(); numTxnsAborted += batchToAbort.size(); //todo: add TXNS.COMMENT filed and set it to 'aborted by system due to timeout' + Collections.sort(batchToAbort);//easier to read logs LOG.info("Aborted the following transactions due to timeout: " + batchToAbort.toString()); } else {