You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ma...@apache.org on 2023/01/01 11:07:33 UTC

[iotdb] branch master updated: [IOTDB-5286]Fix target files should not be select to participate in other compaction task (#8615)

This is an automated email from the ASF dual-hosted git repository.

marklau99 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8c495e31da [IOTDB-5286]Fix target files should not be select to participate in other compaction task (#8615)
8c495e31da is described below

commit 8c495e31dae414ee4eb63316a0f51262f5cebf9c
Author: 周沛辰 <45...@users.noreply.github.com>
AuthorDate: Sun Jan 1 19:07:27 2023 +0800

    [IOTDB-5286]Fix target files should not be select to participate in other compaction task (#8615)
---
 .../db/engine/compaction/CompactionUtils.java      |  2 +-
 .../compaction/cross/CrossSpaceCompactionTask.java |  3 +
 .../compaction/inner/InnerSpaceCompactionTask.java |  3 +
 .../impl/ReadChunkCompactionPerformer.java         |  1 -
 .../engine/storagegroup/TsFileNameGenerator.java   | 11 ++-
 .../db/engine/storagegroup/TsFileResource.java     | 11 +++
 ...eCompactionWithFastPerformerValidationTest.java | 89 +++++++++++++++++++++
 .../inner/FastCompactionPerformerAlignedTest.java  | 25 ++++--
 .../FastCompactionPerformerNoAlignedTest.java      | 90 +++-------------------
 .../ReadChunkCompactionPerformerAlignedTest.java   | 25 ++++--
 .../ReadChunkCompactionPerformerNoAlignedTest.java | 90 +++-------------------
 .../SizeTieredCompactionRecoverTest.java           | 68 +++++-----------
 12 files changed, 187 insertions(+), 231 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
index ee33684cbb..844b3d4954 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
@@ -91,7 +91,7 @@ public class CompactionUtils {
     // serialize xxx.tsfile.resource
     targetResource.setFile(newFile);
     targetResource.serialize();
-    targetResource.close();
+    targetResource.closeWithoutSettingStatus();
   }
 
   /**
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
index bd9c3a2ff7..d4a78ee639 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
@@ -193,6 +193,9 @@ public class CrossSpaceCompactionTask extends AbstractCompactionTask {
         for (TsFileResource targetResource : targetTsfileResourceList) {
           if (targetResource != null) {
             TsFileMetricManager.getInstance().addFile(targetResource.getTsFileSize(), true);
+
+            // set target resources to CLOSED, so that they can be selected to compact
+            targetResource.setStatus(TsFileResourceStatus.CLOSED);
           }
         }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
index ca78d5d694..f2b4f21688 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
@@ -230,6 +230,9 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask {
       if (targetTsFileList.get(0) != null) {
         TsFileMetricManager.getInstance()
             .addFile(targetTsFileList.get(0).getTsFile().length(), sequence);
+
+        // set target resources to CLOSED, so that they can be selected to compact
+        targetTsFileList.get(0).setStatus(TsFileResourceStatus.CLOSED);
       }
 
       if (performer instanceof FastCompactionPerformer) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/performer/impl/ReadChunkCompactionPerformer.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/performer/impl/ReadChunkCompactionPerformer.java
index 443db403d4..da2ded1e41 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/performer/impl/ReadChunkCompactionPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/performer/impl/ReadChunkCompactionPerformer.java
@@ -97,7 +97,6 @@ public class ReadChunkCompactionPerformer implements ISeqCompactionPerformer {
         targetResource.updatePlanIndexes(tsFileResource);
       }
       writer.endFile();
-      targetResource.close();
     } finally {
       TsFileMetricManager.getInstance().addCompactionTempFileSize(true, true, -tempFileSize);
       TsFileMetricManager.getInstance().addCompactionTempFileNum(true, true, -1);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileNameGenerator.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileNameGenerator.java
index 8c15c99ed6..71fc9f11f6 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileNameGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileNameGenerator.java
@@ -195,6 +195,7 @@ public class TsFileNameGenerator {
     for (TsFileResource resource : seqResources) {
       TsFileName tsFileName = getTsFileName(resource.getTsFile().getName());
       tsFileName.setCrossCompactionCnt(tsFileName.getCrossCompactionCnt() + 1);
+      // set target resource to COMPACTING until the end of this task
       targetFileResources.add(
           new TsFileResource(
               new File(
@@ -206,7 +207,8 @@ public class TsFileNameGenerator {
                       + tsFileName.innerCompactionCnt
                       + FILE_NAME_SEPARATOR
                       + tsFileName.crossCompactionCnt
-                      + IoTDBConstant.CROSS_COMPACTION_TMP_FILE_SUFFIX)));
+                      + IoTDBConstant.CROSS_COMPACTION_TMP_FILE_SUFFIX),
+              TsFileResourceStatus.COMPACTING));
     }
     return targetFileResources;
   }
@@ -237,6 +239,7 @@ public class TsFileNameGenerator {
       maxInnerMergeCount = Math.max(tsFileName.innerCompactionCnt, maxInnerMergeCount);
       maxCrossMergeCount = Math.max(tsFileName.crossCompactionCnt, maxCrossMergeCount);
     }
+    // set target resource to COMPACTING until the end of this task
     return sequence
         ? new TsFileResource(
             new File(
@@ -248,7 +251,8 @@ public class TsFileNameGenerator {
                     + (maxInnerMergeCount + 1)
                     + FILE_NAME_SEPARATOR
                     + maxCrossMergeCount
-                    + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX))
+                    + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX),
+            TsFileResourceStatus.COMPACTING)
         : new TsFileResource(
             new File(
                 tsFileResources.get(0).getTsFile().getParent(),
@@ -259,7 +263,8 @@ public class TsFileNameGenerator {
                     + (maxInnerMergeCount + 1)
                     + FILE_NAME_SEPARATOR
                     + maxCrossMergeCount
-                    + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX));
+                    + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX),
+            TsFileResourceStatus.COMPACTING);
   }
 
   public static class TsFileName {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index 5aeec2366a..c151524ab4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -179,6 +179,12 @@ public class TsFileResource {
     this.timeIndex = CONFIG.getTimeIndexLevel().getTimeIndex();
   }
 
+  /** Used for compaction to create target files. */
+  public TsFileResource(File file, TsFileResourceStatus status) {
+    this(file);
+    this.status = status;
+  }
+
   /** unsealed TsFile, for writter */
   public TsFileResource(File file, TsFileProcessor processor) {
     this.file = file;
@@ -451,6 +457,11 @@ public class TsFileResource {
 
   public void close() throws IOException {
     this.setStatus(TsFileResourceStatus.CLOSED);
+    closeWithoutSettingStatus();
+  }
+
+  /** Used for compaction. */
+  public void closeWithoutSettingStatus() throws IOException {
     if (modFile != null) {
       modFile.close();
       modFile = null;
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
index aa135f9677..c997e5e8b1 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.db.engine.compaction.inner.InnerSpaceCompactionTask;
 import org.apache.iotdb.db.engine.compaction.performer.ICrossCompactionPerformer;
 import org.apache.iotdb.db.engine.compaction.performer.impl.FastCompactionPerformer;
 import org.apache.iotdb.db.engine.compaction.task.CompactionTaskSummary;
+import org.apache.iotdb.db.engine.compaction.task.ICompactionSelector;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
@@ -2132,6 +2133,7 @@ public class CrossSpaceCompactionWithFastPerformerValidationTest extends Abstrac
     CompactionUtils.combineModsInInnerCompaction(sourceFiles, targetResources.get(0));
     tsFileManager.replace(sourceFiles, Collections.emptyList(), targetResources, 0, true);
     CompactionUtils.deleteTsFilesInDisk(sourceFiles, COMPACTION_TEST_SG + "-" + "0");
+    targetResources.forEach(x -> x.setStatus(TsFileResourceStatus.CLOSED));
 
     // start selecting files and then start a cross space compaction task
     ICrossSpaceSelector selector =
@@ -2192,4 +2194,91 @@ public class CrossSpaceCompactionWithFastPerformerValidationTest extends Abstrac
     innerSpaceCompactionTask.start();
     validateSeqFiles(true);
   }
+
+  /**
+   * Target files of first cross compaction task should not be selected to participate in other
+   * tasks util the first task is finished.<br>
+   * Seq Files index : 1 ~ 10<br>
+   * Unseq Files index : 1 ~ 2<br>
+   * Unseq file 1 overlaps with seq file 4,5 and unseq file 2 overlaps with seq file 5,6
+   */
+  @Test
+  public void testCompactionSchedule() throws Exception {
+    IoTDBDescriptor.getInstance().getConfig().setMaxCrossCompactionCandidateFileNum(1);
+    IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
+    createFiles(10, 10, 5, 1000, 0, 0, 100, 100, false, true);
+    createFiles(1, 5, 10, 1000, 4000, 4000, 0, 100, false, false);
+    createFiles(1, 5, 10, 1000, 5000, 5000, 0, 100, false, false);
+
+    tsFileManager.addAll(seqResources, true);
+    tsFileManager.addAll(unseqResources, false);
+
+    // first cross compaction task
+    ICrossSpaceSelector crossSpaceCompactionSelector =
+        IoTDBDescriptor.getInstance()
+            .getConfig()
+            .getCrossCompactionSelector()
+            .createInstance(COMPACTION_TEST_SG, "0", 0, tsFileManager);
+    Pair<List<TsFileResource>, List<TsFileResource>> sourceFiles =
+        crossSpaceCompactionSelector
+            .selectCrossSpaceTask(
+                tsFileManager.getSequenceListByTimePartition(0),
+                tsFileManager.getUnsequenceListByTimePartition(0))
+            .get(0);
+    Assert.assertEquals(2, sourceFiles.left.size());
+    Assert.assertEquals(1, sourceFiles.right.size());
+    List<TsFileResource> targetResources =
+        CompactionFileGeneratorUtils.getCrossCompactionTargetTsFileResources(sourceFiles.left);
+    performer.setSourceFiles(sourceFiles.left, sourceFiles.right);
+    performer.setTargetFiles(targetResources);
+    performer.setSummary(new CompactionTaskSummary());
+    performer.perform();
+
+    CompactionUtils.moveTargetFile(targetResources, false, COMPACTION_TEST_SG + "-" + "0");
+    CompactionUtils.combineModsInCrossCompaction(
+        sourceFiles.left, sourceFiles.right, targetResources);
+    tsFileManager.replace(sourceFiles.left, sourceFiles.right, targetResources, 0, true);
+
+    // Suppose the read lock of the source file is occupied by other threads, causing the first task
+    // to get stuck.
+    // Target file of the first task should not be selected to participate in other cross compaction
+    // tasks.
+    Assert.assertEquals(
+        0,
+        crossSpaceCompactionSelector
+            .selectCrossSpaceTask(
+                tsFileManager.getSequenceListByTimePartition(0),
+                tsFileManager.getUnsequenceListByTimePartition(0))
+            .size());
+
+    // Target file of the first task should not be selected to participate in other inner compaction
+    // tasks.
+    ICompactionSelector innerSelector =
+        IoTDBDescriptor.getInstance()
+            .getConfig()
+            .getInnerSequenceCompactionSelector()
+            .createInstance(COMPACTION_TEST_SG, "0", 0, tsFileManager);
+    Assert.assertEquals(0, innerSelector.selectInnerSpaceTask(targetResources).size());
+
+    // first compaction task finishes successfully
+    targetResources.forEach(x -> x.setStatus(TsFileResourceStatus.CLOSED));
+
+    // target file of first compaction task can be selected to participate in another cross
+    // compaction task
+    List<Pair<List<TsFileResource>, List<TsFileResource>>> pairs =
+        crossSpaceCompactionSelector.selectCrossSpaceTask(
+            tsFileManager.getSequenceListByTimePartition(0),
+            tsFileManager.getUnsequenceListByTimePartition(0));
+    Assert.assertEquals(1, pairs.size());
+    Assert.assertEquals(2, pairs.get(0).left.size());
+    Assert.assertEquals(1, pairs.get(0).right.size());
+    Assert.assertEquals(tsFileManager.getTsFileList(true).get(4), pairs.get(0).left.get(0));
+    Assert.assertEquals(tsFileManager.getTsFileList(true).get(5), pairs.get(0).left.get(1));
+    Assert.assertEquals(tsFileManager.getTsFileList(false).get(0), pairs.get(0).right.get(0));
+
+    // target file of first compaction task can be selected to participate in another inner
+    // compaction task
+    List<List<TsFileResource>> innerPairs = innerSelector.selectInnerSpaceTask(targetResources);
+    Assert.assertEquals(1, innerPairs.size());
+  }
 }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
index 2a280ae4f7..8949b507f8 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
@@ -33,6 +33,7 @@ import org.apache.iotdb.db.engine.compaction.task.CompactionTaskSummary;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionCheckerUtils;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
+import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -126,7 +127,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -199,7 +201,8 @@ public class FastCompactionPerformerAlignedTest {
       CompactionFileGeneratorUtils.generateMods(deletionMap, resource, false);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -265,7 +268,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -334,7 +338,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -401,7 +406,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -470,7 +476,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -540,7 +547,8 @@ public class FastCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -621,7 +629,8 @@ public class FastCompactionPerformerAlignedTest {
         timeInterval * (30 + 1),
         randomNull);
     resources.add(resource);
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerNoAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerNoAlignedTest.java
index 897c125985..0c24b7d641 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerNoAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerNoAlignedTest.java
@@ -195,15 +195,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -288,15 +280,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -383,15 +367,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -465,15 +441,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -576,15 +544,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -658,15 +618,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -743,15 +695,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -821,15 +765,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -902,15 +838,7 @@ public class FastCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
index 9d02179080..e3589f3de3 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
@@ -32,6 +32,7 @@ import org.apache.iotdb.db.engine.compaction.task.CompactionTaskSummary;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionCheckerUtils;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
+import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -123,7 +124,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -196,7 +198,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
       CompactionFileGeneratorUtils.generateMods(deletionMap, resource, false);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -262,7 +265,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -331,7 +335,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -398,7 +403,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -467,7 +473,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -537,7 +544,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
           randomNull);
       resources.add(resource);
     }
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
@@ -618,7 +626,8 @@ public class ReadChunkCompactionPerformerAlignedTest {
         timeInterval * (30 + 1),
         randomNull);
     resources.add(resource);
-    TsFileResource targetResource = new TsFileResource(new File(dataDirectory, "1-1-1-0.tsfile"));
+    TsFileResource targetResource =
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(resources, true);
     List<PartialPath> fullPaths = new ArrayList<>();
     List<IMeasurementSchema> iMeasurementSchemas = new ArrayList<>();
     List<String> measurementIds = new ArrayList<>();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
index 7d976aaf3b..3983969e81 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
@@ -192,15 +192,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -286,15 +278,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -382,15 +366,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -465,15 +441,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -577,15 +545,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -660,15 +620,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -746,15 +698,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -825,15 +769,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
@@ -907,15 +843,7 @@ public class ReadChunkCompactionPerformerNoAlignedTest {
       TsFileNameGenerator.TsFileName tsFileName =
           TsFileNameGenerator.getTsFileName(sourceFiles.get(0).getTsFile().getName());
       TsFileResource targetResource =
-          new TsFileResource(
-              new File(
-                  SEQ_DIRS,
-                  String.format(
-                      "%d-%d-%d-%d.tsfile",
-                      tsFileName.getTime(),
-                      tsFileName.getVersion(),
-                      tsFileName.getInnerCompactionCnt() + 1,
-                      tsFileName.getCrossCompactionCnt())));
+          TsFileNameGenerator.getInnerCompactionTargetFileResource(sourceFiles, true);
       performer.setSourceFiles(sourceFiles);
       performer.setTargetFiles(Collections.singletonList(targetResource));
       performer.setSummary(new CompactionTaskSummary());
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
index 142a6b6232..03b93a9da0 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
@@ -456,19 +456,13 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
     closeTsFileSequenceReader();
     assertEquals(500, count);
 
+    List<TsFileResource> tmpSeqResources = new ArrayList<>();
+    tmpSeqResources.add(seqResources.get(0));
+    tmpSeqResources.add(seqResources.get(1));
+    tmpSeqResources.add(seqResources.get(2));
+
     TsFileResource targetTsFileResource =
-        new TsFileResource(
-            new File(
-                SEQ_DIRS
-                    + File.separator.concat(
-                        0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 1
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX)));
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(tmpSeqResources, true);
     File compactionLogFile =
         new File(
             seqResources.get(0).getTsFile().getParent()
@@ -476,10 +470,6 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
                 + targetTsFileResource.getTsFile().getName()
                 + INNER_COMPACTION_LOG_NAME_SUFFIX);
     CompactionLogger compactionLogger = new CompactionLogger(compactionLogFile);
-    List<TsFileResource> tmpSeqResources = new ArrayList<>();
-    tmpSeqResources.add(seqResources.get(0));
-    tmpSeqResources.add(seqResources.get(1));
-    tmpSeqResources.add(seqResources.get(2));
     compactionLogger.logFiles(tmpSeqResources, STR_SOURCE_FILES);
     compactionLogger.logFiles(Collections.singletonList(targetTsFileResource), STR_TARGET_FILES);
     deleteFileIfExists(targetTsFileResource.getTsFile());
@@ -885,19 +875,14 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
     closeTsFileSequenceReader();
     assertEquals(500, count);
 
+    List<TsFileResource> tmpSeqResources = new ArrayList<>();
+    tmpSeqResources.add(seqResources.get(0));
+    tmpSeqResources.add(seqResources.get(1));
+    tmpSeqResources.add(seqResources.get(2));
+
     TsFileResource targetTsFileResource =
-        new TsFileResource(
-            new File(
-                SEQ_DIRS
-                    + File.separator.concat(
-                        0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 1
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX)));
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(tmpSeqResources, true);
+
     File compactionLogFile =
         new File(
             seqResources.get(0).getTsFile().getParent()
@@ -905,10 +890,6 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
                 + targetTsFileResource.getTsFile().getName()
                 + INNER_COMPACTION_LOG_NAME_SUFFIX);
     CompactionLogger compactionLogger = new CompactionLogger(compactionLogFile);
-    List<TsFileResource> tmpSeqResources = new ArrayList<>();
-    tmpSeqResources.add(seqResources.get(0));
-    tmpSeqResources.add(seqResources.get(1));
-    tmpSeqResources.add(seqResources.get(2));
     compactionLogger.logFiles(tmpSeqResources, STR_SOURCE_FILES);
     compactionLogger.logFiles(Collections.singletonList(targetTsFileResource), STR_TARGET_FILES);
     deleteFileIfExists(targetTsFileResource.getTsFile());
@@ -984,19 +965,14 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
     closeTsFileSequenceReader();
     assertEquals(500, count);
 
+    List<TsFileResource> tmpSeqResources = new ArrayList<>();
+    tmpSeqResources.add(seqResources.get(0));
+    tmpSeqResources.add(seqResources.get(1));
+    tmpSeqResources.add(seqResources.get(2));
+
     TsFileResource targetTsFileResource =
-        new TsFileResource(
-            new File(
-                SEQ_DIRS
-                    + File.separator.concat(
-                        0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 1
-                            + IoTDBConstant.FILE_NAME_SEPARATOR
-                            + 0
-                            + IoTDBConstant.INNER_COMPACTION_TMP_FILE_SUFFIX)));
+        TsFileNameGenerator.getInnerCompactionTargetFileResource(tmpSeqResources, true);
+
     File compactionLogFile =
         new File(
             seqResources.get(0).getTsFile().getParent()
@@ -1004,10 +980,6 @@ public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactio
                 + targetTsFileResource.getTsFile().getName()
                 + INNER_COMPACTION_LOG_NAME_SUFFIX);
     CompactionLogger compactionLogger = new CompactionLogger(compactionLogFile);
-    List<TsFileResource> tmpSeqResources = new ArrayList<>();
-    tmpSeqResources.add(seqResources.get(0));
-    tmpSeqResources.add(seqResources.get(1));
-    tmpSeqResources.add(seqResources.get(2));
     compactionLogger.logFiles(tmpSeqResources, STR_SOURCE_FILES);
     compactionLogger.logFiles(Collections.singletonList(targetTsFileResource), STR_TARGET_FILES);
     deleteFileIfExists(targetTsFileResource.getTsFile());