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

zyk pushed a commit to branch rel/1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.1 by this push:
     new 6d261e9aed0 [To rel/1.1][IOTDB-5831]Fix drop database won't delete 
totally files in disk during data insertion (#9762)
6d261e9aed0 is described below

commit 6d261e9aed0bc6cf4cde68ecc460a8504bff7fd6
Author: Marcos_Zyk <[email protected]>
AuthorDate: Fri May 5 16:02:41 2023 +0800

    [To rel/1.1][IOTDB-5831]Fix drop database won't delete totally files in 
disk during data insertion (#9762)
---
 .../iotdb/confignode/manager/partition/PartitionManager.java       | 4 ++++
 .../iotdb/confignode/manager/schema/ClusterSchemaManager.java      | 7 +++++++
 .../iotdb/confignode/persistence/executor/ConfigPlanExecutor.java  | 7 +++++--
 .../iotdb/confignode/persistence/partition/PartitionInfo.java      | 5 +++++
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index 79df2c353bf..c90e510bbdc 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -751,6 +751,10 @@ public class PartitionManager {
     getConsensusManager().write(preDeleteDatabasePlan);
   }
 
+  public boolean isDatabasePreDeleted(String database) {
+    return partitionInfo.isDatabasePreDeleted(database);
+  }
+
   /**
    * Get TSeriesPartitionSlot
    *
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
index 15036c5bfae..f1737bd09eb 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
@@ -136,6 +136,13 @@ public class ClusterSchemaManager {
           illegalPathException.getErrorCode(), 
illegalPathException.getMessage());
     }
 
+    if 
(getPartitionManager().isDatabasePreDeleted(databaseSchemaPlan.getSchema().getName()))
 {
+      return RpcUtils.getStatus(
+          TSStatusCode.METADATA_ERROR,
+          String.format(
+              "Some other task is deleting database %s", 
databaseSchemaPlan.getSchema().getName()));
+    }
+
     try {
       
clusterSchemaInfo.isDatabaseNameValid(databaseSchemaPlan.getSchema().getName());
     } catch (MetadataException metadataException) {
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index 03600a1846c..a9975b6072b 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -293,8 +293,11 @@ public class ConfigPlanExecutor {
         return clusterSchemaInfo.adjustMaxRegionGroupCount(
             (AdjustMaxRegionGroupNumPlan) physicalPlan);
       case DeleteDatabase:
-        partitionInfo.deleteDatabase((DeleteDatabasePlan) physicalPlan);
-        return clusterSchemaInfo.deleteDatabase((DeleteDatabasePlan) 
physicalPlan);
+        try {
+          return clusterSchemaInfo.deleteDatabase((DeleteDatabasePlan) 
physicalPlan);
+        } finally {
+          partitionInfo.deleteDatabase((DeleteDatabasePlan) physicalPlan);
+        }
       case PreDeleteDatabase:
         return partitionInfo.preDeleteDatabase((PreDeleteDatabasePlan) 
physicalPlan);
       case SetTTL:
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
index 2dd737ca631..458ee113c1c 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
@@ -259,6 +259,11 @@ public class PartitionInfo implements SnapshotProcessor {
     return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
   }
 
+  public boolean isDatabasePreDeleted(String database) {
+    DatabasePartitionTable databasePartitionTable = 
databasePartitionTables.get(database);
+    return databasePartitionTable != null && 
!databasePartitionTable.isNotPreDeleted();
+  }
+
   /**
    * Thread-safely delete StorageGroup
    *

Reply via email to