This is an automated email from the ASF dual-hosted git repository.
jackietien 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 fa626bfa0a7 support serializing plain device time index (#17285)
fa626bfa0a7 is described below
commit fa626bfa0a7a1d9d50d8e448d23cafb60b3c4ac4
Author: shuwenwei <[email protected]>
AuthorDate: Fri Mar 13 16:04:03 2026 +0800
support serializing plain device time index (#17285)
---
.../tsfile/timeindex/ArrayDeviceTimeIndex.java | 2 +-
.../tsfile/timeindex/PlainDeviceTimeIndex.java | 6 -----
.../repair/RepairUnsortedFileCompactionTest.java | 26 ++++++++++++++++++++++
3 files changed, 27 insertions(+), 7 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
index 8499b6d6b3d..fb29083a737 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
@@ -95,7 +95,7 @@ public class ArrayDeviceTimeIndex implements ITimeIndex {
@Override
public void serialize(OutputStream outputStream) throws IOException {
- ReadWriteIOUtils.write(getTimeIndexType(), outputStream);
+ ReadWriteIOUtils.write(ARRAY_DEVICE_TIME_INDEX_TYPE, outputStream);
int deviceNum = deviceToIndex.size();
ReadWriteIOUtils.write(deviceNum, outputStream);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
index 309067d1672..785407ca40f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
@@ -28,18 +28,12 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.HashSet;
import java.util.Set;
public class PlainDeviceTimeIndex extends ArrayDeviceTimeIndex implements
ITimeIndex {
- @Override
- public void serialize(OutputStream outputStream) throws IOException {
- throw new UnsupportedOperationException();
- }
-
@Override
public PlainDeviceTimeIndex deserialize(
InputStream inputStream, IDeviceID.Deserializer deserializer) throws
IOException {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
index f2e39d8f866..7774bbb609b 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
@@ -65,7 +65,9 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
+import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -104,6 +106,30 @@ public class RepairUnsortedFileCompactionTest extends
AbstractRepairDataTest {
super.tearDown();
}
+ @Test
+ public void testMoveOldVersionResourceFile() throws IOException {
+ String pathStr =
+
this.getClass().getClassLoader().getResource("v3tsfile/compaction-test-tsfile").getFile();
+ File v3TsFile = new File(pathStr);
+ File v3TsFileResource = new File(pathStr + "-resource");
+ TsFileResource resource1 = createEmptyFileAndResource(true);
+ Files.copy(v3TsFile.toPath(), resource1.getTsFile().toPath());
+ Files.copy(
+ v3TsFileResource.toPath(), new File(resource1.getTsFilePath() +
".resource").toPath());
+ resource1.deserialize();
+ resource1.setTsFileRepairStatus(TsFileRepairStatus.NEED_TO_REPAIR_BY_MOVE);
+
+ RepairUnsortedFileCompactionTask task =
+ new RepairUnsortedFileCompactionTask(0, tsFileManager, resource1,
true, 0);
+ Assert.assertTrue(task.start());
+
+ TsFileResource resource2 =
+ new
TsFileResource(tsFileManager.getTsFileList(false).get(0).getTsFile());
+ resource2.deserialize();
+ Assert.assertEquals(
+ ArrayDeviceTimeIndex.ARRAY_DEVICE_TIME_INDEX_TYPE,
resource2.getTimeIndexType());
+ }
+
@Test
public void testRepairUnsortedDataBetweenPageWithNonAlignedSeries() throws
IOException {
TsFileResource resource = createEmptyFileAndResource(true);