diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 935845c8eb17fa..9241bbe4ed1f79 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -678,7 +678,7 @@ public class Config extends ConfigBase { "单个数据库最大并发运行的事务数,包括 prepare 和 commit 事务。", "Maximum concurrent running txn num including prepare, commit txns under a single db.", "Txn manager will reject coming txns."}) - public static int max_running_txn_num_per_db = 1000; + public static int max_running_txn_num_per_db = 10000; @ConfField(masterOnly = true, description = {"pending load task 执行线程数。这个配置可以限制当前等待的导入作业数。" + "并且应小于 `max_running_txn_num_per_db`。", 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 59d5bc571f09a3..119571b7b29f47 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 @@ -36,6 +36,7 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; import org.apache.doris.common.DuplicatedRequestException; +import org.apache.doris.common.FeConstants; import org.apache.doris.common.FeNameFormat; import org.apache.doris.common.LabelAlreadyUsedException; import org.apache.doris.common.LoadException; @@ -314,6 +315,11 @@ public long beginTransaction(List tableIdList, String label, TUniqueId req long listenerId, long timeoutSecond) throws DuplicatedRequestException, LabelAlreadyUsedException, BeginTransactionException, AnalysisException, QuotaExceedException, MetaNotFoundException { + + if (!Env.getCurrentEnv().isMaster() && !FeConstants.runningUnitTest) { + throw new BeginTransactionException("FE is not master"); + } + Database db = env.getInternalCatalog().getDbOrMetaException(dbId); if (!coordinator.isFromInternal) { InternalDatabaseUtil.checkDatabase(db.getFullName(), ConnectContext.get()); diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/FakeEnv.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/FakeEnv.java index 32f32cf9e7ebb3..d4fc9b5d8b0f0e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/catalog/FakeEnv.java +++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/FakeEnv.java @@ -60,4 +60,9 @@ public static SystemInfoService getCurrentSystemInfo() { return systemInfo; } + @Mock + public boolean isMaster() { + return true; + } + } diff --git a/fe/fe-core/src/test/java/org/apache/doris/common/proc/DbsProcDirTest.java b/fe/fe-core/src/test/java/org/apache/doris/common/proc/DbsProcDirTest.java index 5071ba001224b9..6ddb2bbf9435e6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/common/proc/DbsProcDirTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/common/proc/DbsProcDirTest.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.Config; import org.apache.doris.common.FeConstants; import org.apache.doris.datasource.ExternalCatalog; import org.apache.doris.datasource.ExternalDatabase; @@ -221,9 +222,9 @@ public void testFetchResultNormal() throws AnalysisException { "LastUpdateTime"), result.getColumnNames()); List> rows = Lists.newArrayList(); rows.add(Arrays.asList(String.valueOf(db1.getId()), db1.getFullName(), "0", "0.000 ", "8388608.000 TB", - FeConstants.null_string, "0", "1073741824", "10", "1000", FeConstants.null_string)); + FeConstants.null_string, "0", "1073741824", "10", String.valueOf(Config.max_running_txn_num_per_db), FeConstants.null_string)); rows.add(Arrays.asList(String.valueOf(db2.getId()), db2.getFullName(), "0", "0.000 ", "8388608.000 TB", - FeConstants.null_string, "0", "1073741824", "20", "1000", FeConstants.null_string)); + FeConstants.null_string, "0", "1073741824", "20", String.valueOf(Config.max_running_txn_num_per_db), FeConstants.null_string)); Assert.assertEquals(rows, result.getRows()); }