You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ch...@apache.org on 2021/06/02 03:54:16 UTC
[iotdb] branch rel/0.12 updated: fix getStorageGroupNodeByPath bug
(#3311)
This is an automated email from the ASF dual-hosted git repository.
chaow pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.12 by this push:
new 896a489 fix getStorageGroupNodeByPath bug (#3311)
896a489 is described below
commit 896a48950b358d32ea8b5c7290326dd93fd6e2c2
Author: HouliangQi <ne...@163.com>
AuthorDate: Wed Jun 2 11:52:53 2021 +0800
fix getStorageGroupNodeByPath bug (#3311)
---
.../java/org/apache/iotdb/db/metadata/MTree.java | 3 ++
.../iotdb/db/metadata/MManagerBasicTest.java | 35 ++++++++++++++++++++++
2 files changed, 38 insertions(+)
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 39a5088..7dbf727 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
@@ -561,6 +561,9 @@ public class MTree implements Serializable {
}
MNode cur = root;
for (int i = 1; i < nodes.length; i++) {
+ if (cur == null) {
+ break;
+ }
cur = cur.getChild(nodes[i]);
if (cur instanceof StorageGroupMNode) {
return (StorageGroupMNode) cur;
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 26c1d9a..07c72b1 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
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.metadata;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.exception.metadata.MetadataException;
+import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -809,4 +810,38 @@ public class MManagerBasicTest {
assertTrue(manager.isPathExist(new PartialPath("root.group-with-hyphen")));
}
+
+ @Test
+ public void testGetStorageGroupNodeByPath() {
+ MManager manager = IoTDB.metaManager;
+ PartialPath partialPath = null;
+
+ try {
+ partialPath = new PartialPath("root.ln.sg1");
+ } catch (IllegalPathException e) {
+ fail(e.getMessage());
+ }
+
+ try {
+ manager.setStorageGroup(partialPath);
+ } catch (MetadataException e) {
+ fail(e.getMessage());
+ }
+
+ try {
+ partialPath = new PartialPath("root.ln.sg2.device1.sensor1");
+ } catch (IllegalPathException e) {
+ fail(e.getMessage());
+ }
+
+ try {
+ manager.getStorageGroupNodeByPath(partialPath);
+ } catch (StorageGroupNotSetException e) {
+ Assert.assertEquals(
+ "Storage group is not set for current seriesPath: [root.ln.sg2.device1.sensor1]",
+ e.getMessage());
+ } catch (MetadataException e) {
+ fail(e.getMessage());
+ }
+ }
}