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 {