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 {