You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ne...@apache.org on 2021/06/02 03:27:35 UTC
[iotdb] branch master updated: [IOTDB-1414]NPE occurred when call
getStorageGroupNodeByPath() method using not exist path
This is an automated email from the ASF dual-hosted git repository.
neuyilan 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 91d3690 [IOTDB-1414]NPE occurred when call getStorageGroupNodeByPath() method using not exist path
91d3690 is described below
commit 91d3690a59ba5c0a72dce7a8bc37f7731793a4a2
Author: HouliangQi <ne...@163.com>
AuthorDate: Wed Jun 2 11:27:15 2021 +0800
[IOTDB-1414]NPE occurred when call getStorageGroupNodeByPath() method using not exist path
---
.../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 3c21e8c..711302c 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
@@ -696,6 +696,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 cb8960a..1761ab7 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.metadata.mnode.MNode;
import org.apache.iotdb.db.metadata.mnode.MeasurementMNode;
import org.apache.iotdb.db.metadata.template.Template;
@@ -1562,4 +1563,38 @@ public class MManagerBasicTest {
fail(e.getMessage());
}
}
+
+ @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());
+ }
+ }
}