This is an automated email from the ASF dual-hosted git repository. alsuliman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 104d46a8cd11dad14ed6ff8f6a074b1171afb09b Author: Michael Blow <[email protected]> AuthorDate: Sun Apr 4 11:34:35 2021 -0400 [NO ISSUE][*DB][TXN] Avoid abort log on empty txn, reduce recovery logging Change-Id: I91c01f34e38df7d2398e5383b5d39632e64f0e7f Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10884 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Blow <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- .../org/apache/asterix/app/nc/RecoveryManager.java | 19 ++++++++----------- .../service/transaction/TransactionManager.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java index 1461ef4..65cb36a 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java @@ -599,22 +599,19 @@ public class RecoveryManager implements IRecoveryManager, ILifeCycleComponent { throw new ACIDException(e); } long lastLSN = txnContext.getLastLSN(); - if (LOGGER.isInfoEnabled()) { - LOGGER.info("rollbacking transaction log records from " + firstLSN + " to " + lastLSN); - } + boolean infoEnabled = LOGGER.isInfoEnabled(); // check if the transaction actually wrote some logs. if (firstLSN == TransactionManagementConstants.LogManagerConstants.TERMINAL_LSN || firstLSN > lastLSN) { - if (LOGGER.isInfoEnabled()) { - LOGGER.info("no need to roll back as there were no operations by the txn " + txnContext.getTxnId()); + if (infoEnabled) { + LOGGER.info("no need to rollback as there were no operations by " + txnContext.getTxnId()); } return; } - - // While reading log records from firstLsn to lastLsn, collect uncommitted txn's Lsns - if (LOGGER.isInfoEnabled()) { - LOGGER.info("collecting loser transaction's LSNs from " + firstLSN + " to " + lastLSN); + if (infoEnabled) { + LOGGER.info("rolling back transaction log records from " + firstLSN + " to " + lastLSN + " for " + + txnContext.getTxnId()); } - + // While reading log records from firstLsn to lastLsn, collect uncommitted txn's Lsns Map<TxnEntityId, List<Long>> jobLoserEntity2LSNsMap = new HashMap<>(); TxnEntityId tempKeyTxnEntityId = new TxnEntityId(-1, -1, -1, null, -1, false); int updateLogCount = 0; @@ -722,7 +719,7 @@ public class RecoveryManager implements IRecoveryManager, ILifeCycleComponent { } } - if (LOGGER.isInfoEnabled()) { + if (infoEnabled) { LOGGER.info("undone loser transaction's effect"); LOGGER.info("[RecoveryManager's rollback log count] update/entityCommit/undo:" + updateLogCount + "/" + entityCommitLogCount + "/" + undoCount); diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionManager.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionManager.java index c218dec..ee65962 100644 --- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionManager.java +++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionManager.java @@ -18,6 +18,8 @@ */ package org.apache.asterix.transaction.management.service.transaction; +import static org.apache.asterix.transaction.management.service.transaction.TransactionManagementConstants.LogManagerConstants.TERMINAL_LSN; + import java.io.IOException; import java.io.OutputStream; import java.util.Map; @@ -101,10 +103,12 @@ public class TransactionManager implements ITransactionManager, ILifeCycleCompon final ITransactionContext txnCtx = getTransactionContext(txnId); try { if (txnCtx.isWriteTxn()) { - LogRecord logRecord = new LogRecord(); - TransactionUtil.formJobTerminateLogRecord(txnCtx, logRecord, false); - txnSubsystem.getLogManager().log(logRecord); - txnSubsystem.getCheckpointManager().secure(txnId); + if (txnCtx.getFirstLSN() != TERMINAL_LSN) { + LogRecord logRecord = new LogRecord(); + TransactionUtil.formJobTerminateLogRecord(txnCtx, logRecord, false); + txnSubsystem.getLogManager().log(logRecord); + txnSubsystem.getCheckpointManager().secure(txnId); + } txnSubsystem.getRecoveryManager().rollbackTransaction(txnCtx); txnCtx.setTxnState(ITransactionManager.ABORTED); }
