This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
commit 7b36e719b53fe42e5eb6820f3f88e3c3f4790c9f Author: caiconghui <55968745+caicong...@users.noreply.github.com> AuthorDate: Sat Jun 3 08:25:20 2023 +0800 [fix](dynamic_partition) fix dead lock when modify dynamic partition property for olap table (#20390) Co-authored-by: caiconghui1 <caicongh...@jd.com> --- .../java/org/apache/doris/common/util/DynamicPartitionUtil.java | 6 ------ .../src/main/java/org/apache/doris/datasource/InternalCatalog.java | 2 ++ .../java/org/apache/doris/catalog/DynamicPartitionTableTest.java | 2 ++ 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java index 56dc3232ea..4660e4eec6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java @@ -472,12 +472,6 @@ public class DynamicPartitionUtil { if (olapTable.getTableProperty() != null && olapTable.getTableProperty().getDynamicPartitionProperty() != null) { if (olapTable.getTableProperty().getDynamicPartitionProperty().getEnable()) { - if (!isReplay) { - // execute create partition first time only in master of FE, So no need execute - // when it's replay - Env.getCurrentEnv().getDynamicPartitionScheduler() - .executeDynamicPartitionFirstTime(dbId, olapTable.getId()); - } Env.getCurrentEnv().getDynamicPartitionScheduler() .registerDynamicPartitionTable(dbId, olapTable.getId()); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index 4b62de26ef..c25f2f1044 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -2226,6 +2226,8 @@ public class InternalCatalog implements CatalogIf<Database> { LOG.info("successfully create table[{};{}]", tableName, tableId); // register or remove table from DynamicPartition after table created DynamicPartitionUtil.registerOrRemoveDynamicPartitionTable(db.getId(), olapTable, false); + Env.getCurrentEnv().getDynamicPartitionScheduler() + .executeDynamicPartitionFirstTime(db.getId(), olapTable.getId()); Env.getCurrentEnv().getDynamicPartitionScheduler() .createOrUpdateRuntimeInfo(tableId, DynamicPartitionScheduler.LAST_UPDATE_TIME, TimeUtils.getCurrentFormatTime()); diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/DynamicPartitionTableTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/DynamicPartitionTableTest.java index 84270649fb..9c8a2aa297 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/catalog/DynamicPartitionTableTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/DynamicPartitionTableTest.java @@ -699,11 +699,13 @@ public class DynamicPartitionTableTest { // history_partition_num too large, but because start is -10, so modify ok String alter3 = "alter table test.dynamic_partition3 set ('dynamic_partition.history_partition_num' = '1000')"; ExceptionChecker.expectThrowsNoException(() -> alterTable(alter3)); + Env.getCurrentEnv().getDynamicPartitionScheduler().executeDynamicPartitionFirstTime(db.getId(), tbl.getId()); Assert.assertEquals(14, tbl.getPartitionNames().size()); // set start and history_partition_num properly. String alter4 = "alter table test.dynamic_partition3 set ('dynamic_partition.history_partition_num' = '100', 'dynamic_partition.start' = '-20')"; ExceptionChecker.expectThrowsNoException(() -> alterTable(alter4)); + Env.getCurrentEnv().getDynamicPartitionScheduler().executeDynamicPartitionFirstTime(db.getId(), tbl.getId()); Assert.assertEquals(24, tbl.getPartitionNames().size()); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org