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
*