This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch serializePlainDeviceTimeIndex in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d0aa2cf57cece32a5a16e0d7e774c607193f9a1f Author: shuwenwei <[email protected]> AuthorDate: Wed Mar 11 19:03:38 2026 +0800 support serializing plain device time index --- .../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);
