You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/04/07 09:12:44 UTC
[iotdb] branch rel/0.13 updated: [To rel/0.13][IOTDB-2826]Unmark storage group among templates when deleted (#5431)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 1c6b6922c6 [To rel/0.13][IOTDB-2826]Unmark storage group among templates when deleted (#5431)
1c6b6922c6 is described below
commit 1c6b6922c66f32e54c63cde06094dfa4ca13fc4a
Author: ZhaoXin <x_...@163.com>
AuthorDate: Thu Apr 7 17:12:39 2022 +0800
[To rel/0.13][IOTDB-2826]Unmark storage group among templates when deleted (#5431)
---
.../java/org/apache/iotdb/db/metadata/MManager.java | 5 +++++
.../apache/iotdb/db/metadata/template/Template.java | 4 ++++
.../org/apache/iotdb/db/metadata/TemplateTest.java | 18 ++++++++++++++++++
3 files changed, 27 insertions(+)
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 99aebb4176..b6c4a6bdb1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -869,6 +869,11 @@ public class MManager {
removeFromTagInvertedIndex(leafMNode);
}
+ // unmark all storage group from related templates
+ for (Template template : templateManager.getTemplateMap().values()) {
+ template.unmarkStorageGroups(storageGroups);
+ }
+
// drop triggers with no exceptions
TriggerEngine.drop(leafMNodes);
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
index 74f474c3dc..abcf3aa3ab 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
@@ -421,6 +421,10 @@ public class Template {
return relatedStorageGroup.removeAll(getSGPaths(unsetNode));
}
+ public boolean unmarkStorageGroups(Collection<PartialPath> sgPaths) {
+ return relatedStorageGroup.removeAll(sgPaths);
+ }
+
// endregion
// region inner utils
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
index 289e17e82f..ab59cab0ee 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
@@ -416,6 +416,24 @@ public class TemplateTest {
manager.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
}
+ @Test
+ public void testDropTemplateWithStorageGroupDeleted() throws MetadataException {
+ MManager manager = IoTDB.metaManager;
+ manager.createSchemaTemplate(getTreeTemplatePlan());
+ manager.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.sg1.d1"));
+ try {
+ manager.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
+ fail();
+ } catch (MetadataException e) {
+ assertEquals(
+ "Template [treeTemplate] has been set on MTree, cannot be dropped now.", e.getMessage());
+ }
+
+ manager.deleteStorageGroups(Arrays.asList(new PartialPath("root.sg1")));
+ manager.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
+ assertEquals(0, manager.getAllTemplates().size());
+ }
+
@Test
public void testTemplateAlignment() throws MetadataException {
MManager manager = IoTDB.metaManager;