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 2021/03/01 11:23:57 UTC
[iotdb] branch master updated: [IOTDB-1159] set storage group
exception message more clear (#2726)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 8c27729 [IOTDB-1159] set storage group exception message more clear (#2726)
8c27729 is described below
commit 8c2772932bde87cb915f9cf8ccdbe57b4ddf8e6a
Author: lvshuang <un...@gmail.com>
AuthorDate: Mon Mar 1 19:23:38 2021 +0800
[IOTDB-1159] set storage group exception message more clear (#2726)
---
.../metadata/StorageGroupAlreadySetException.java | 16 +++++++++---
.../java/org/apache/iotdb/db/metadata/MTree.java | 6 ++++-
.../iotdb/db/metadata/MManagerBasicTest.java | 3 ++-
.../org/apache/iotdb/db/metadata/MTreeTest.java | 29 +++++++++++++++++++++-
4 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/exception/metadata/StorageGroupAlreadySetException.java b/server/src/main/java/org/apache/iotdb/db/exception/metadata/StorageGroupAlreadySetException.java
index 2d52d21..4222489 100644
--- a/server/src/main/java/org/apache/iotdb/db/exception/metadata/StorageGroupAlreadySetException.java
+++ b/server/src/main/java/org/apache/iotdb/db/exception/metadata/StorageGroupAlreadySetException.java
@@ -26,8 +26,18 @@ public class StorageGroupAlreadySetException extends MetadataException {
private static final long serialVersionUID = 9110669164701929779L;
public StorageGroupAlreadySetException(String path) {
- super(
- String.format("%s has already been set to storage group", path),
- TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode());
+ super(getMessage(path, false), TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode());
+ }
+
+ public StorageGroupAlreadySetException(String path, boolean hasChild) {
+ super(getMessage(path, hasChild), TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode());
+ }
+
+ private static String getMessage(String path, boolean hasChild) {
+ if (hasChild) {
+ return String.format("some children of %s have already been set to storage group", path);
+ } else {
+ return String.format("%s has already been set to storage group", path);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 1693866..39a5088 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -374,7 +374,11 @@ public class MTree implements Serializable {
}
if (cur.hasChild(nodeNames[i])) {
// node b has child sg
- throw new StorageGroupAlreadySetException(path.getFullPath());
+ if (cur.getChild(nodeNames[i]) instanceof StorageGroupMNode) {
+ throw new StorageGroupAlreadySetException(path.getFullPath());
+ } else {
+ throw new StorageGroupAlreadySetException(path.getFullPath(), true);
+ }
} else {
StorageGroupMNode storageGroupMNode =
new StorageGroupMNode(
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
index 670ef94..624f441 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
@@ -83,7 +83,8 @@ public class MManagerBasicTest {
try {
manager.setStorageGroup(new PartialPath("root.laptop"));
} catch (MetadataException e) {
- Assert.assertEquals("root.laptop has already been set to storage group", e.getMessage());
+ Assert.assertEquals(
+ "some children of root.laptop have already been set to storage group", e.getMessage());
}
try {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
index ff7895f..66cba27 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MTreeTest.java
@@ -59,6 +59,32 @@ public class MTreeTest {
}
@Test
+ public void testSetStorageGroupExceptionMessage() throws IllegalPathException {
+ MTree root = new MTree();
+ try {
+ root.setStorageGroup(new PartialPath("root.edge1.access"));
+ root.setStorageGroup(new PartialPath("root.edge1"));
+ fail("Expected exception");
+ } catch (MetadataException e) {
+ assertEquals(
+ "some children of root.edge1 have already been set to storage group", e.getMessage());
+ }
+ try {
+ root.setStorageGroup(new PartialPath("root.edge2"));
+ root.setStorageGroup(new PartialPath("root.edge2.access"));
+ fail("Expected exception");
+ } catch (MetadataException e) {
+ assertEquals("root.edge2 has already been set to storage group", e.getMessage());
+ }
+ try {
+ root.setStorageGroup(new PartialPath("root.edge1.access"));
+ fail("Expected exception");
+ } catch (MetadataException e) {
+ assertEquals("root.edge1.access has already been set to storage group", e.getMessage());
+ }
+ }
+
+ @Test
public void testAddLeftNodePathWithAlias() throws MetadataException {
MTree root = new MTree();
root.setStorageGroup(new PartialPath("root.laptop"));
@@ -446,7 +472,8 @@ public class MTreeTest {
try {
root.setStorageGroup(new PartialPath("root.laptop"));
} catch (MetadataException e) {
- Assert.assertEquals("root.laptop has already been set to storage group", e.getMessage());
+ Assert.assertEquals(
+ "some children of root.laptop have already been set to storage group", e.getMessage());
}
// check timeseries
assertFalse(root.isPathExist(new PartialPath("root.laptop.d1.s0")));