diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/TransactionEntry.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/TransactionEntry.java index 81e591636fb536..3538516b6fb7cf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/TransactionEntry.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/TransactionEntry.java @@ -248,6 +248,10 @@ public long beginTransaction(TableIf table) throws Exception { throw new AnalysisException( "Transaction insert must be in the same database, expect db_id=" + this.database.getId()); } + if (subTransactionStates.size() >= Config.max_sub_transactions_in_transaction_load) { + throw new UserException("Transaction load can not have more than " + + Config.max_sub_transactions_in_transaction_load + " sub transactions"); + } long subTxnId; if (Config.isCloudMode()) { TUniqueId queryId = ConnectContext.get().queryId(); diff --git a/regression-test/suites/insert_p0/transaction/txn_insert_inject_case.groovy b/regression-test/suites/insert_p0/transaction/txn_insert_inject_case.groovy index 4e33d8a03ce313..fe0a35b8c805a0 100644 --- a/regression-test/suites/insert_p0/transaction/txn_insert_inject_case.groovy +++ b/regression-test/suites/insert_p0/transaction/txn_insert_inject_case.groovy @@ -231,4 +231,11 @@ suite("txn_insert_inject_case", "nonConcurrent") { } assertEquals(7, rowCount) } + + // check the limit of sub transaction num + try { + + } finally { + sql """ admin set frontend config('max_sub_txn_num' = '100') """ + } }