fix multiple tests
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java index 4812a9f..b431213 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java
@@ -20,6 +20,7 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.exception; import org.apache.iotdb.commons.conf.IoTDBConstant; +import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.AbstractCompactionTask; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; @@ -99,6 +100,9 @@ fullStorageGroupName); } + AbstractCompactionTask.unsetCompactionModsFile(seqResourceList); + AbstractCompactionTask.unsetCompactionModsFile(unseqResourceList); + if (!handleSuccess) { LOGGER.error( "[Compaction][ExceptionHandler] Fail to handle {} space compaction exception, "
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java index 9e7900c..93649e0 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java
@@ -378,7 +378,7 @@ return null; } - protected void unsetCompactionModsFile(List<TsFileResource> sourceFileList) { + public static void unsetCompactionModsFile(List<TsFileResource> sourceFileList) { for (TsFileResource tsFile : sourceFileList) { tsFile.setCompactionModFile(null); } @@ -510,13 +510,14 @@ } @SafeVarargs - protected final void allocateModFile( - List<TsFileResource> targetFiles, List<TsFileResource>... allSourceFiles) throws IOException { + public static void allocateModFile( + List<TsFileResource> targetFiles, ModFileManager modFileManager, List<TsFileResource>... allSourceFiles) throws IOException { // allocate the same mod file for all target files ModificationFile modificationFile = modFileManager.allocate(targetFiles.get(0)); - for (int i = 1; i < targetFiles.size(); i++) { + for (int i = 0; i < targetFiles.size(); i++) { // do not persist the modification file path now because the resource is incomplete targetFiles.get(i).setModFile(modificationFile, false); + targetFiles.get(i).setModFileManager(modFileManager); modificationFile.addReference(targetFiles.get(i)); } // mark the mod file as the compaction mod file for all source files
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java index 856d1fc..f8c8a8b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java
@@ -179,7 +179,7 @@ long startTime = System.currentTimeMillis(); targetTsfileResourceList = TsFileNameGenerator.getCrossCompactionTargetFileResources(selectedSequenceFiles); - allocateModFile(targetTsfileResourceList, selectedSequenceFiles, selectedUnsequenceFiles); + allocateModFile(targetTsfileResourceList, modFileManager, selectedSequenceFiles, selectedUnsequenceFiles); logFile = new File(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java index 3c15bae..a226ce6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java
@@ -357,7 +357,7 @@ availablePositionForTargetFiles.subList(0, requiredPositionNum), filesView.sequence); } - allocateModFile(filesView.targetFilesInPerformer, filesView.sourceFilesInLog); + allocateModFile(filesView.targetFilesInPerformer, modFileManager, filesView.sourceFilesInLog); filesView.targetFilesInLog = new ArrayList<>(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java index 637b2ab..427e90f 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
@@ -97,7 +97,7 @@ TsFileNameGenerator.getSettleCompactionTargetFileResources( filesView.sourceFilesInCompactionPerformer, filesView.sequence)); filesView.targetFilesInPerformer = filesView.targetFilesInLog; - allocateModFile(filesView.targetFilesInPerformer, filesView.sourceFilesInCompactionPerformer); + allocateModFile(filesView.targetFilesInPerformer, modFileManager, filesView.sourceFilesInCompactionPerformer); } @Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java index 9f7beeb..b59c324 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
@@ -19,6 +19,10 @@ package org.apache.iotdb.db.storageengine.dataregion.modification; +import static java.nio.file.StandardOpenOption.APPEND; +import static java.nio.file.StandardOpenOption.CREATE; + +import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.slf4j.Logger; @@ -63,8 +67,8 @@ lock.writeLock().lock(); try { if (fileOutputStream == null) { - fileOutputStream = new BufferedOutputStream(Files.newOutputStream(file.toPath())); - channel = FileChannel.open(file.toPath()); + fileOutputStream = new BufferedOutputStream(Files.newOutputStream(file.toPath(), CREATE, APPEND)); + channel = FileChannel.open(file.toPath(), CREATE, APPEND); } entry.serialize(fileOutputStream); channel.force(false); @@ -73,22 +77,32 @@ } } - public Iterator<ModEntry> getModIterator() throws IOException { - return new ModIterator(); + public Iterator<ModEntry> getModIterator(long offset) throws IOException { + return new ModIterator(offset); } + @TestOnly public List<ModEntry> getAllMods() throws IOException { + return getAllMods(0); + } + + public List<ModEntry> getAllMods(long offset) throws IOException { List<ModEntry> allMods = new ArrayList<>(); - getModIterator().forEachRemaining(allMods::add); + getModIterator(offset).forEachRemaining(allMods::add); return allMods; } @Override public void close() throws IOException { + if (fileOutputStream == null) { + return; + } + lock.writeLock().lock(); try { fileOutputStream.close(); fileOutputStream = null; + channel.force(true); channel.close(); channel = null; } finally { @@ -141,7 +155,7 @@ } public static String composeFileName(long levelNum, long modFileNum) { - return levelNum + "-" + modFileNum + "." + FILE_SUFFIX; + return levelNum + "-" + modFileNum + FILE_SUFFIX; } public static long[] parseFileName(String name) { @@ -160,8 +174,12 @@ private InputStream inputStream; private ModEntry nextEntry; - public ModIterator() throws IOException { + public ModIterator(long offset) throws IOException { this.inputStream = Files.newInputStream(file.toPath()); + long skipped = inputStream.skip(offset); + if (skipped != offset) { + LOGGER.warn("Fail to read Mod file {}, expecting offset {}, actually skipped {}", file, offset, skipped); + } } @Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java index 6954b43..c549e7a 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
@@ -83,6 +83,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import static java.nio.file.StandardOpenOption.WRITE; import static org.apache.iotdb.commons.conf.IoTDBConstant.FILE_NAME_SEPARATOR; import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX; @@ -377,7 +378,7 @@ serialize(); } else { // only update the mod file related parts - try (FileChannel fileChannel = FileChannel.open(resFile.toPath())) { + try (FileChannel fileChannel = FileChannel.open(resFile.toPath(), WRITE)) { fileChannel.truncate(modFilePathOffset); } FileOutputStream fileOutputStream = @@ -671,11 +672,9 @@ public void closeWithoutSettingStatus() throws IOException { if (modFile != null) { modFile.close(); - modFile = null; } if (oldModFile != null) { oldModFile.close(); - oldModFile = null; } processor = null; @@ -1409,7 +1408,7 @@ Iterator<ModEntry> newIterator = null; try { ModificationFile newModFile = getModFile(); - newIterator = newModFile != null ? newModFile.getModIterator() : null; + newIterator = newModFile != null ? newModFile.getModIterator(modFileOffset) : null; } catch (IOException e) { LOGGER.warn("Failed to read mods from {} for {}", modFile, this, e); } @@ -1444,4 +1443,8 @@ public void setModFileManager(ModFileManager modFileManager) { this.modFileManager = modFileManager; } + + public long getModFileOffset() { + return modFileOffset; + } }
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java index c45deeb..05d5b91 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java
@@ -208,13 +208,16 @@ } } - List<Integer> scanOp4Result = new ArrayList<>(); - List<Integer> identitySinkOpResult = new ArrayList<>(); + List<Long> scanOp4Time = new ArrayList<>(); + List<Integer> scanOp4Value = new ArrayList<>(); + List<Long> identitySinkOpTime = new ArrayList<>(); + List<Integer> identitySinkOpValue = new ArrayList<>(); while (seriesScanOperator4.hasNext()) { TsBlock seriesScanBlock = seriesScanOperator4.next(); assertNotNull(seriesScanBlock); for (int i = 0; i < seriesScanBlock.getPositionCount(); i++) { - scanOp4Result.add(seriesScanBlock.getColumn(0).getInt(i)); + scanOp4Time.add(seriesScanBlock.getTimeByIndex(i)); + scanOp4Value.add(seriesScanBlock.getColumn(0).getInt(i)); } } @@ -226,12 +229,14 @@ assertEquals(1, identityTsBlock.getValueColumnCount()); assertTrue(identityTsBlock.getColumn(0) instanceof IntColumn); for (int i = 0; i < identityTsBlock.getPositionCount(); i++) { - identitySinkOpResult.add(identityTsBlock.getColumn(0).getInt(i)); + identitySinkOpValue.add(identityTsBlock.getColumn(0).getInt(i)); + identitySinkOpTime.add(identityTsBlock.getTimeByIndex(i)); } } - assertEquals(500, scanOp4Result.size()); - assertEquals(scanOp4Result, identitySinkOpResult); + assertEquals(500, scanOp4Value.size()); + assertEquals(scanOp4Value, identitySinkOpValue); + assertEquals(scanOp4Time, identitySinkOpTime); } catch (IllegalPathException e) { e.printStackTrace(); fail();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java index 44e2f67..5c384f9 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java
@@ -38,6 +38,7 @@ import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionConfigRestorer; import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionFileGeneratorUtils; import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTestFileWriter; +import org.apache.iotdb.db.storageengine.dataregion.modification.ModFileManager; import org.apache.iotdb.db.storageengine.dataregion.modification.v1.ModificationFileV1; import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager; @@ -182,6 +183,7 @@ protected TsFileManager tsFileManager = new TsFileManager(COMPACTION_TEST_SG, "0", STORAGE_GROUP_DIR.getPath()); + protected ModFileManager modFileManager = new ModFileManager(); public void setUp() throws IOException, WriteProcessException, MetadataException, InterruptedException { @@ -394,6 +396,7 @@ resource.updatePlanIndexes(fileVersion); resource.setStatusForTest(TsFileResourceStatus.NORMAL); resource.serialize(); + resource.setModFileManager(modFileManager); if (isSeq) { seqResources.add(resource); } else {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java index 74de651..358f3d0 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.ICompactionPerformer; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.FastCompactionPerformer; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.ReadPointCompactionPerformer; +import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.AbstractCompactionTask; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CompactionTaskSummary; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CrossSpaceCompactionTask; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.subtask.FastCompactionTaskSummary; @@ -323,6 +324,7 @@ */ @Test public void testHandleWithoutAllSourceFilesAndModFilesExist() throws Exception { + registerTimeseriesInMManger(4, 5, false); createFiles(2, 2, 3, 300, 0, 0, 50, 50, false, true); createFiles(2, 4, 5, 300, 700, 700, 50, 50, false, true); @@ -334,6 +336,8 @@ List<TsFileResource> targetResources = CompactionFileGeneratorUtils.getCrossCompactionTargetTsFileResources(seqResources); + AbstractCompactionTask.allocateModFile(targetResources, modFileManager, seqResources, unseqResources); + File compactionLogFile = new File( SEQ_DIRS, @@ -444,11 +448,13 @@ createFiles(3, 3, 4, 200, 20, 10020, 30, 30, false, false); createFiles(2, 1, 5, 100, 450, 20450, 0, 0, false, false); TsFileManager tsFileManager = new TsFileManager(COMPACTION_TEST_SG, "0", SEQ_DIRS.getPath()); + modFileManager = tsFileManager.getModFileManager(seqResources.get(0).getTimePartition()); tsFileManager.addAll(seqResources, true); tsFileManager.addAll(unseqResources, false); List<TsFileResource> targetResources = CompactionFileGeneratorUtils.getCrossCompactionTargetTsFileResources(seqResources); + AbstractCompactionTask.allocateModFile(targetResources, modFileManager, seqResources, unseqResources); File compactionLogFile = new File( SEQ_DIRS, @@ -674,6 +680,7 @@ List<TsFileResource> targetResources = CompactionFileGeneratorUtils.getCrossCompactionTargetTsFileResources(seqResources); + AbstractCompactionTask.allocateModFile(targetResources, modFileManager, seqResources, unseqResources); File compactionLogFile = new File( SEQ_DIRS,
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 3cbbf23..ab033cf 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
@@ -598,7 +598,7 @@ modFile = targetResource.getModFile(); Assert.assertNotNull(modFile); - Iterator<ModEntry> modIterator = modFile.getModIterator(); + Iterator<ModEntry> modIterator = modFile.getModIterator(targetResource.getModFileOffset()); Assert.assertTrue(modIterator.hasNext()); TreeDeletionEntry modification = (TreeDeletionEntry) modIterator.next(); Assert.assertEquals(writtenModification, modification);
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java index 62e93e3..9022c62 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java
@@ -19,10 +19,15 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.utils; +import java.util.Collection; +import java.util.Collections; import org.apache.iotdb.commons.conf.IoTDBConstant; import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.DiskSpaceInsufficientException; +import org.apache.iotdb.db.storageengine.dataregion.modification.ModEntry; +import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile; +import org.apache.iotdb.db.storageengine.dataregion.modification.TreeDeletionEntry; import org.apache.iotdb.db.storageengine.dataregion.modification.v1.Deletion; import org.apache.iotdb.db.storageengine.dataregion.modification.v1.ModificationFileV1; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; @@ -277,20 +282,19 @@ TsFileResource targetTsFileResource, boolean isCompactionMods) throws IllegalPathException, IOException { - ModificationFileV1 modificationFile; + ModificationFile modificationFile; if (isCompactionMods) { - modificationFile = ModificationFileV1.getCompactionMods(targetTsFileResource); + modificationFile = targetTsFileResource.getCompactionModFile(); } else { - modificationFile = ModificationFileV1.getNormalMods(targetTsFileResource); + modificationFile = targetTsFileResource.getModFileMayAllocate(); } for (Entry<String, Pair<Long, Long>> toDeleteTimeseriesAndTimeEntry : toDeleteTimeseriesAndTime.entrySet()) { String fullPath = toDeleteTimeseriesAndTimeEntry.getKey(); Pair<Long, Long> startTimeEndTime = toDeleteTimeseriesAndTimeEntry.getValue(); - Deletion deletion = - new Deletion( + TreeDeletionEntry deletion = + new TreeDeletionEntry( new PartialPath(fullPath), - Long.MAX_VALUE, startTimeEndTime.left, startTimeEndTime.right); modificationFile.write(deletion);
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java index 224420f..5e96c93 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode; import org.apache.iotdb.db.storageengine.dataregion.memtable.IMemTable; import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk; +import org.apache.iotdb.db.storageengine.dataregion.modification.ModFileManager; import org.apache.iotdb.db.storageengine.dataregion.modification.v1.ModificationFileV1; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.apache.iotdb.db.storageengine.dataregion.wal.utils.TsFileUtilsForRecoverTest; @@ -591,6 +592,7 @@ tsFileResource.updateEndTime(DEVICE1_NAME, 2); tsFileResource.updateStartTime(DEVICE2_NAME, 3); tsFileResource.updateEndTime(DEVICE2_NAME, 4); + tsFileResource.setModFileManager(new ModFileManager()); // generate DeleteDataNode DeleteDataNode deleteDataNode = @@ -601,11 +603,10 @@ Long.MAX_VALUE); // redo DeleteDataNode, vsg processor is used to test IdTable, don't test IdTable here - File modsFile = new File(FILE_NAME.concat(ModificationFileV1.FILE_SUFFIX)); - assertFalse(modsFile.exists()); + assertFalse(tsFileResource.newModFileExists()); TsFilePlanRedoer planRedoer = new TsFilePlanRedoer(tsFileResource); planRedoer.redoDelete(deleteDataNode); - assertTrue(modsFile.exists()); + assertTrue(tsFileResource.newModFileExists()); } @Test
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java index ab27bae..2a5b942 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode; import org.apache.iotdb.db.storageengine.dataregion.memtable.IMemTable; import org.apache.iotdb.db.storageengine.dataregion.memtable.PrimitiveMemTable; +import org.apache.iotdb.db.storageengine.dataregion.modification.ModFileManager; import org.apache.iotdb.db.storageengine.dataregion.modification.v1.ModificationFileV1; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntry; @@ -189,6 +190,7 @@ WALEntry walEntry = new WALInfoEntry(fakeMemTableId, deleteDataNode); // recover tsFileResource = new TsFileResource(file); + tsFileResource.setModFileManager(new ModFileManager()); // vsg processor is used to test IdTable, don't test IdTable here try (UnsealedTsFileRecoverPerformer recoverPerformer = new UnsealedTsFileRecoverPerformer( @@ -225,7 +227,7 @@ // check file existence assertTrue(file.exists()); assertTrue(new File(FILE_NAME.concat(TsFileResource.RESOURCE_SUFFIX)).exists()); - assertTrue(new File(FILE_NAME.concat(ModificationFileV1.FILE_SUFFIX)).exists()); + assertTrue(tsFileResource.newModFileExists()); } private void generateCrashedFile(File tsFile) throws IOException, WriteProcessException {