This is an automated email from the ASF dual-hosted git repository.

caiconghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 6958a8f92f [fix](dynamic_partition) fix dead lock when modify dynamic 
partition property for olap table (#20390)
6958a8f92f is described below

commit 6958a8f92fdc10b73e458b5caf415c8e8d0d8e60
Author: caiconghui <[email protected]>
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 <[email protected]>
---
 .../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 69046917e1..552ff2decb 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
@@ -475,12 +475,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 9199c5fedf..961b3399be 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
@@ -2323,6 +2323,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 825f50a233..3609e56592 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
@@ -703,11 +703,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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to