This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push: new 8f2898dd61e branch-3.0: [fix](transaction load) transaction may publish stuck if fe restart #44190 (#44266) 8f2898dd61e is described below commit 8f2898dd61e1008c4044570c4b8e022f66060808 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Tue Nov 19 20:51:58 2024 +0800 branch-3.0: [fix](transaction load) transaction may publish stuck if fe restart #44190 (#44266) Cherry-picked from #44190 Co-authored-by: meiyi <me...@selectdb.com> --- .../apache/doris/transaction/DatabaseTransactionMgr.java | 13 +++++++++++++ .../doris/transaction/DatabaseTransactionMgrTest.java | 6 +++--- .../insert_p0/transaction/txn_insert_restart_fe.groovy | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java index 163830e4475..a4dcd877ac3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java @@ -1660,6 +1660,14 @@ public class DatabaseTransactionMgr { if (idToRunningTransactionState.put(transactionState.getTransactionId(), transactionState) == null) { runningTxnNums++; } + if (isReplay && transactionState.getSubTxnIds() != null) { + LOG.info("add sub transactions for txn_id={}, status={}, sub_txn_ids={}", + transactionState.getTransactionId(), transactionState.getTransactionStatus(), + transactionState.getSubTxnIds()); + for (Long subTxnId : transactionState.getSubTxnIds()) { + addSubTransaction(transactionState.getTransactionId(), subTxnId); + } + } } else { if (idToRunningTransactionState.remove(transactionState.getTransactionId()) != null) { runningTxnNums--; @@ -1670,6 +1678,11 @@ public class DatabaseTransactionMgr { } else { finalStatusTransactionStateDequeLong.add(transactionState); } + if (transactionState.getSubTxnIds() != null) { + LOG.info("clean sub transactions for txn_id={}, sub_txn_ids={}", transactionState.getTransactionId(), + transactionState.getSubTxnIds()); + cleanSubTransactions(transactionState.getTransactionId()); + } } updateTxnLabels(transactionState); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/transaction/DatabaseTransactionMgrTest.java b/fe/fe-core/src/test/java/org/apache/doris/transaction/DatabaseTransactionMgrTest.java index a189aba6811..82c79e9f6f0 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/transaction/DatabaseTransactionMgrTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/transaction/DatabaseTransactionMgrTest.java @@ -357,13 +357,13 @@ public class DatabaseTransactionMgrTest { long subTransactionId3 = transactionState6.getSubTxnIds().get(2); TransactionState subTransactionState = masterTransMgr.getTransactionState(CatalogTestUtil.testDbId1, subTransactionId3); - Assert.assertEquals(transactionState6, subTransactionState); + Assert.assertEquals(null, subTransactionState); // finished txn will remove sub txn map // test show transaction state command - List<List<String>> singleTranInfos = masterDbTransMgr.getSingleTranInfo(CatalogTestUtil.testDbId1, + /*List<List<String>> singleTranInfos = masterDbTransMgr.getSingleTranInfo(CatalogTestUtil.testDbId1, subTransactionId3); Assert.assertEquals(1, singleTranInfos.size()); List<String> txnInfo = singleTranInfos.get(0); - Assert.assertEquals(String.valueOf(transactionId6), txnInfo.get(0)); + Assert.assertEquals(String.valueOf(transactionId6), txnInfo.get(0));*/ // test get table transaction info: table_id to partition_id map List<List<Comparable>> tableTransInfos = masterDbTransMgr.getTableTransInfo(transactionId6); diff --git a/regression-test/suites/insert_p0/transaction/txn_insert_restart_fe.groovy b/regression-test/suites/insert_p0/transaction/txn_insert_restart_fe.groovy index bd478bc2359..9a743bfc985 100644 --- a/regression-test/suites/insert_p0/transaction/txn_insert_restart_fe.groovy +++ b/regression-test/suites/insert_p0/transaction/txn_insert_restart_fe.groovy @@ -44,6 +44,7 @@ suite("txn_insert_restart_fe", 'docker') { options.feConfigs.add('sys_log_verbose_modules=org.apache.doris') // options.beConfigs.add('sys_log_verbose_modules=*') options.beConfigs.add('enable_java_support=false') + options.beConfigs.add('pending_data_expire_time_sec=1') docker(options) { // ---------- test restart fe ---------- def result = sql 'SELECT DATABASE()' --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org