Skip to content

Commit b4419bb

Browse files
authored
fix compaction path util npe (#15653)
1 parent b0fa6bd commit b4419bb

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionPathUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ public static PartialPath getPath(IDeviceID device, String measurement)
3838
String[] nodes = new String[device.segmentNum() + tableNameSegments.length];
3939
System.arraycopy(tableNameSegments, 0, nodes, 0, tableNameSegments.length);
4040
for (int i = 0; i < device.segmentNum() - 1; i++) {
41-
nodes[i + tableNameSegments.length] = device.segment(i + 1).toString();
41+
nodes[i + tableNameSegments.length] =
42+
device.segment(i + 1) == null ? null : device.segment(i + 1).toString();
4243
}
4344
nodes[device.segmentNum() + tableNameSegments.length - 1] = measurement;
4445
MeasurementPath path = new MeasurementPath(nodes);
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.apache.iotdb.db.storageengine.dataregion.compaction.utils;
21+
22+
import org.apache.iotdb.commons.exception.MetadataException;
23+
import org.apache.iotdb.commons.path.PartialPath;
24+
import org.apache.iotdb.db.exception.StorageEngineException;
25+
import org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
26+
import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionPathUtils;
27+
28+
import org.apache.tsfile.exception.write.WriteProcessException;
29+
import org.apache.tsfile.file.metadata.IDeviceID;
30+
import org.apache.tsfile.file.metadata.StringArrayDeviceID;
31+
import org.junit.Assert;
32+
import org.junit.Test;
33+
34+
import java.io.IOException;
35+
36+
public class CompactionUtilsTest extends AbstractCompactionTest {
37+
@Override
38+
public void setUp()
39+
throws IOException, WriteProcessException, MetadataException, InterruptedException {
40+
super.setUp();
41+
}
42+
43+
@Override
44+
public void tearDown() throws IOException, StorageEngineException {
45+
super.tearDown();
46+
}
47+
48+
@Test
49+
public void testCompactionPathUtils() {
50+
try {
51+
IDeviceID deviceID = new StringArrayDeviceID(new String[] {"db.table1", null, "tag1"});
52+
PartialPath path = CompactionPathUtils.getPath(deviceID, "s1");
53+
} catch (Exception e) {
54+
Assert.fail();
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)