diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionExceptionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionExceptionTest.java
index 53067b3..5fc075f 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionExceptionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionExceptionTest.java
@@ -32,6 +32,7 @@
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
 import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
+import org.apache.iotdb.db.engine.storagegroup.TsFileName;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
@@ -45,6 +46,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -228,6 +230,7 @@
     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());
+
     tsFileManager.addAll(seqResources, true);
     tsFileManager.addAll(unseqResources, false);
 
@@ -247,15 +250,7 @@
     performer.setSummary(new CompactionTaskSummary());
     performer.perform();
     CompactionUtils.moveTargetFile(targetResources, false, COMPACTION_TEST_SG);
-    for (TsFileResource resource : seqResources) {
-      tsFileManager.getSequenceListByTimePartition(0).remove(resource);
-    }
-    for (TsFileResource resource : unseqResources) {
-      tsFileManager.getUnsequenceListByTimePartition(0).remove(resource);
-    }
-    for (TsFileResource resource : targetResources) {
-      tsFileManager.getSequenceListByTimePartition(0).keepOrderInsert(resource);
-    }
+    tsFileManager.replace(seqResources, unseqResources, targetResources, 0, true);
     seqResources.get(0).getTsFile().delete();
     compactionLogger.close();
     CompactionExceptionHandler.handleException(
@@ -296,6 +291,102 @@
       Assert.assertTrue(
           new File(resource.getTsFilePath() + TsFileResource.RESOURCE_SUFFIX).exists());
     }
+    List<TsFileResource> resources = new ArrayList<>();
+    for (TsFileResource resource : tsFileManager.getSequenceListByTimePartition(0)) {
+      resources.add(resource);
+    }
+
+    Assert.assertEquals(4, tsFileManager.getSequenceListByTimePartition(0).size());
+    Assert.assertEquals(0, tsFileManager.getUnsequenceListByTimePartition(0).size());
+    Assert.assertTrue(tsFileManager.isAllowCompaction());
+  }
+
+  @Test
+  public void testHandleWithSomeSameTimeStampSourceFilesExisted() 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);
+    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());
+    TsFileName tsFileName1 = TsFileName.parse(seqResources.get(1).getTsFile().getName());
+    TsFileName tsFileName2 = TsFileName.parse(seqResources.get(2).getTsFile().getName());
+    tsFileName2.setTime(tsFileName1.getTime());
+    File newTsFile =
+        new File(seqResources.get(2).getTsFile().getParent(), tsFileName2.toFileName());
+    seqResources.get(2).getTsFile().renameTo(newTsFile);
+    File resourceFile =
+        new File(seqResources.get(2).getTsFilePath() + TsFileResource.RESOURCE_SUFFIX);
+    resourceFile.renameTo(
+        new File(
+            resourceFile.getParent(), tsFileName2.toFileName() + TsFileResource.RESOURCE_SUFFIX));
+    seqResources.get(2).setFile(newTsFile);
+
+    tsFileManager.addAll(seqResources, true);
+    tsFileManager.addAll(unseqResources, false);
+
+    List<TsFileResource> targetResources =
+        CompactionFileGeneratorUtils.getCrossCompactionTargetTsFileResources(seqResources);
+    File compactionLogFile =
+        new File(
+            SEQ_DIRS,
+            targetResources.get(0).getTsFile().getName()
+                + CompactionLogger.CROSS_COMPACTION_LOG_NAME_SUFFIX);
+    CompactionLogger compactionLogger = new CompactionLogger(compactionLogFile);
+    compactionLogger.logFiles(targetResources, STR_TARGET_FILES);
+    compactionLogger.logFiles(seqResources, STR_SOURCE_FILES);
+    compactionLogger.logFiles(unseqResources, STR_SOURCE_FILES);
+    ICompactionPerformer performer =
+        new ReadPointCompactionPerformer(seqResources, unseqResources, targetResources);
+    performer.setSummary(new CompactionTaskSummary());
+    performer.perform();
+    CompactionUtils.moveTargetFile(targetResources, false, COMPACTION_TEST_SG);
+    tsFileManager.replace(seqResources, unseqResources, targetResources, 0, true);
+    seqResources.get(0).getTsFile().delete();
+    compactionLogger.close();
+    CompactionExceptionHandler.handleException(
+        COMPACTION_TEST_SG,
+        compactionLogFile,
+        targetResources,
+        seqResources,
+        unseqResources,
+        tsFileManager,
+        0,
+        false,
+        true);
+    // all source file should not exist
+    for (TsFileResource resource : seqResources) {
+      Assert.assertFalse(resource.getTsFile().exists());
+    }
+    // tmp target file and tmp target resource file should not exist, target file and target
+    // resource file should exist
+    for (TsFileResource resource : targetResources) {
+      Assert.assertFalse(
+          new File(
+                  resource
+                      .getTsFilePath()
+                      .replace(
+                          TsFileConstant.TSFILE_SUFFIX,
+                          IoTDBConstant.CROSS_COMPACTION_TMP_FILE_SUFFIX))
+              .exists());
+      Assert.assertFalse(
+          new File(
+                  resource
+                          .getTsFilePath()
+                          .replace(
+                              TsFileConstant.TSFILE_SUFFIX,
+                              IoTDBConstant.CROSS_COMPACTION_TMP_FILE_SUFFIX)
+                      + TsFileResource.RESOURCE_SUFFIX)
+              .exists());
+      Assert.assertTrue(resource.getTsFile().exists());
+      Assert.assertTrue(
+          new File(resource.getTsFilePath() + TsFileResource.RESOURCE_SUFFIX).exists());
+    }
+    List<TsFileResource> resources = new ArrayList<>();
+    for (TsFileResource resource : tsFileManager.getSequenceListByTimePartition(0)) {
+      resources.add(resource);
+    }
+
     Assert.assertEquals(4, tsFileManager.getSequenceListByTimePartition(0).size());
     Assert.assertEquals(0, tsFileManager.getUnsequenceListByTimePartition(0).size());
     Assert.assertTrue(tsFileManager.isAllowCompaction());
@@ -350,15 +441,7 @@
       CompactionFileGeneratorUtils.generateMods(deleteMap, unseqResources.get(i), false);
     }
     CompactionUtils.combineModsInCrossCompaction(seqResources, unseqResources, targetResources);
-    for (TsFileResource resource : seqResources) {
-      tsFileManager.getSequenceListByTimePartition(0).remove(resource);
-    }
-    for (TsFileResource resource : unseqResources) {
-      tsFileManager.getUnsequenceListByTimePartition(0).remove(resource);
-    }
-    for (TsFileResource resource : targetResources) {
-      tsFileManager.getSequenceListByTimePartition(0).keepOrderInsert(resource);
-    }
+    tsFileManager.replace(seqResources, unseqResources, targetResources, 0, true);
     seqResources.get(0).remove();
 
     CompactionExceptionHandler.handleException(
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
index 09e17a7..54ef8a1 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
@@ -37,7 +37,6 @@
 import org.apache.iotdb.db.engine.compaction.utils.CompactionTimeseriesType;
 import org.apache.iotdb.db.engine.flush.TsFileFlushPolicy;
 import org.apache.iotdb.db.engine.storagegroup.DataRegion;
-import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
@@ -1050,8 +1049,7 @@
       Assert.assertFalse(resource.getCompactionModFile().exists());
     }
 
-    TsFileResource resource =
-        TsFileNameGenerator.increaseInnerCompactionCnt(sourceResources.get(0));
+    TsFileResource resource = task.targetTsFileResource;
     resource.resetModFile();
     Assert.assertTrue(resource.getModFile().exists());
     Assert.assertEquals(2, resource.getModFile().getModifications().size());
