You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2023/02/24 06:42:53 UTC

[iotdb] branch master updated: [IOTDB-5147]Optimize compaction schedule when priority is BALANCE (#9103)

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

xingtanzjr 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 a3869ec324 [IOTDB-5147]Optimize compaction schedule when priority is BALANCE (#9103)
a3869ec324 is described below

commit a3869ec324f2f564ba2cfba13cc25056d01974ad
Author: 周沛辰 <45...@users.noreply.github.com>
AuthorDate: Fri Feb 24 14:42:46 2023 +0800

    [IOTDB-5147]Optimize compaction schedule when priority is BALANCE (#9103)
---
 docs/UserGuide/Reference/Common-Config-Manual.md   |  8 ++++++
 .../zh/UserGuide/Reference/Common-Config-Manual.md | 31 ++++++++++++++--------
 .../resources/conf/iotdb-common.properties         |  8 ++++--
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 11 ++++++++
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  5 ++++
 .../compaction/schedule/CompactionScheduler.java   |  6 ++++-
 .../compaction/schedule/CompactionTaskManager.java | 13 ++++++---
 .../DefaultCompactionTaskComparatorImpl.java       | 21 ++++++++-------
 .../impl/RewriteCrossSpaceCompactionSelector.java  | 31 ++++++++++------------
 .../impl/SizeTieredCompactionSelector.java         | 24 ++++++++++++++---
 .../utils/CrossSpaceCompactionCandidate.java       |  6 ++---
 .../engine/compaction/CompactionSchedulerTest.java |  2 +-
 .../CompactionSchedulerWithFastPerformerTest.java  |  2 +-
 13 files changed, 116 insertions(+), 52 deletions(-)

diff --git a/docs/UserGuide/Reference/Common-Config-Manual.md b/docs/UserGuide/Reference/Common-Config-Manual.md
index b67cd1e92e..45efdc0ce2 100644
--- a/docs/UserGuide/Reference/Common-Config-Manual.md
+++ b/docs/UserGuide/Reference/Common-Config-Manual.md
@@ -1026,6 +1026,14 @@ Different configuration parameters take effect in the following three ways:
 |Default| true                                                            |
 |Effective| After restart system                                            |
 
+* candidate\_compaction\_task\_queue\_size
+
+|Name| candidate\_compaction\_task\_queue\_size    |
+|:---:|:--------------------------------------------|
+|Description| The size of candidate compaction task queue |
+|Type| Int32                                       |
+|Default| 50                                          |
+|Effective| After restart system                        |
 
 ### Write Ahead Log Configuration
 
diff --git a/docs/zh/UserGuide/Reference/Common-Config-Manual.md b/docs/zh/UserGuide/Reference/Common-Config-Manual.md
index 9ce344097d..3f328b8c68 100644
--- a/docs/zh/UserGuide/Reference/Common-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/Common-Config-Manual.md
@@ -1065,21 +1065,30 @@ IoTDB ConfigNode 和 DataNode 的公共配置参数位于 `conf` 目录下。
 
 * sub\_compaction\_thread\_count
 
-|名字| sub\_compaction\_thread\_count |
-|:---:|:--|
-|描述| 每个跨空间合并任务的子任务线程数 |
-|类型| Int32 |
-|默认值| 4 |
-|改后生效方式| 重启服务生效|
+|名字| sub\_compaction\_thread\_count  |
+|:---:|:--------------------------------|
+|描述| 每个合并任务的子任务线程数,只对跨空间合并和乱序空间内合并生效 |
+|类型| int32                           |
+|默认值| 4                               |
+|改后生效方式| 重启服务生效                          |
 
 * enable\_compaction\_validation
 
 |名字| enable\_compaction\_validation |
-|:---:|:--|
-|描述| 开启合并结束后对顺序文件时间范围的检查 |
-|类型| Boolean |
-|默认值| true |
-|改后生效方式| 重启服务生效|
+|:---:|:-------------------------------|
+|描述| 开启合并结束后对顺序文件时间范围的检查            |
+|类型| Boolean                        |
+|默认值| true                           |
+|改后生效方式| 重启服务生效                         |
+
+* candidate\_compaction\_task\_queue\_size
+
+|名字| candidate\_compaction\_task\_queue\_size |
+|:---:|:-----------------------------------------|
+|描述| 合并任务优先级队列的大小                             |
+|类型| int32                                    |
+|默认值| 50                                       |
+|改后生效方式| 重启服务生效                                   |
 
 ### 写前日志配置
 
diff --git a/node-commons/src/assembly/resources/conf/iotdb-common.properties b/node-commons/src/assembly/resources/conf/iotdb-common.properties
index 5dcb1c5d93..316d84662d 100644
--- a/node-commons/src/assembly/resources/conf/iotdb-common.properties
+++ b/node-commons/src/assembly/resources/conf/iotdb-common.properties
@@ -569,6 +569,10 @@ cluster_name=defaultCluster
 # BALANCE: alternate two compaction types
 # compaction_priority=BALANCE
 
+# The size of candidate compaction task queue.
+# Datatype: int
+# candidate_compaction_task_queue_size = 50
+
 # The target tsfile size in compaction
 # Datatype: long, Unit: byte
 # target_compaction_file_size=1073741824
@@ -722,9 +726,9 @@ cluster_name=defaultCluster
 # Datatype: int
 # page_size_in_byte=65536
 
-# The maximum number of data points in a page, default 1024*1024
+# The maximum number of data points in a page, default 10000
 # Datatype: int
-# max_number_of_points_in_page=1048576
+# max_number_of_points_in_page=10000
 
 # The threshold for pattern matching in regex
 # Datatype: int
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 13d368276f..0e880669d2 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -488,6 +488,9 @@ public class IoTDBConfig {
 
   private boolean enableCompactionValidation = true;
 
+  /** The size of candidate compaction task queue. */
+  private int candidateCompactionTaskQueueSize = 50;
+
   /** whether to cache meta data(ChunkMetaData and TsFileMetaData) or not. */
   private boolean metaDataCacheEnable = true;
 
@@ -3596,6 +3599,14 @@ public class IoTDBConfig {
     this.enableCompactionValidation = enableCompactionValidation;
   }
 
+  public int getCandidateCompactionTaskQueueSize() {
+    return candidateCompactionTaskQueueSize;
+  }
+
+  public void setCandidateCompactionTaskQueueSize(int candidateCompactionTaskQueueSize) {
+    this.candidateCompactionTaskQueueSize = candidateCompactionTaskQueueSize;
+  }
+
   public boolean isEnableAuditLog() {
     return enableAuditLog;
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 8c5b060644..32d84c0ba3 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -645,6 +645,11 @@ public class IoTDBDescriptor {
             properties.getProperty(
                 "enable_compaction_validation",
                 Boolean.toString(conf.isEnableCompactionValidation()))));
+    conf.setCandidateCompactionTaskQueueSize(
+        Integer.parseInt(
+            properties.getProperty(
+                "candidate_compaction_task_queue_size",
+                Integer.toString(conf.getCandidateCompactionTaskQueueSize()))));
 
     conf.setEnablePartialInsert(
         Boolean.parseBoolean(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionScheduler.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionScheduler.java
index 74f7b168b2..7d3a5d4d7a 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionScheduler.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionScheduler.java
@@ -35,6 +35,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * CompactionScheduler schedules and submits the compaction task periodically, and it counts the
@@ -149,7 +150,10 @@ public class CompactionScheduler {
         crossSpaceCompactionSelector.selectCrossSpaceTask(
             tsFileManager.getOrCreateSequenceListByTimePartition(timePartition),
             tsFileManager.getOrCreateUnsequenceListByTimePartition(timePartition));
-    List<Long> memoryCost = crossSpaceCompactionSelector.getCompactionMemoryCost();
+    List<Long> memoryCost =
+        taskList.stream()
+            .map(CrossCompactionTaskResource::getTotalMemoryCost)
+            .collect(Collectors.toList());
     for (int i = 0, size = taskList.size(); i < size; ++i) {
       CompactionTaskManager.getInstance()
           .addTaskToWaitingQueue(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionTaskManager.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionTaskManager.java
index 76bf9db322..d75401820d 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionTaskManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/CompactionTaskManager.java
@@ -58,6 +58,8 @@ public class CompactionTaskManager implements IService {
 
   private static final CompactionTaskManager INSTANCE = new CompactionTaskManager();
 
+  private final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
+
   // The thread pool that executes the compaction task. The default number of threads for this pool
   // is 10.
   private WrappedThreadPoolExecutor taskExecutionPool;
@@ -67,7 +69,8 @@ public class CompactionTaskManager implements IService {
 
   public static volatile AtomicInteger currentTaskNum = new AtomicInteger(0);
   private final FixedPriorityBlockingQueue<AbstractCompactionTask> candidateCompactionTaskQueue =
-      new FixedPriorityBlockingQueue<>(1024, new DefaultCompactionTaskComparatorImpl());
+      new FixedPriorityBlockingQueue<>(
+          config.getCandidateCompactionTaskQueueSize(), new DefaultCompactionTaskComparatorImpl());
   // <StorageGroup-DataRegionId,futureSet>, it is used to store all compaction tasks under each
   // virtualStorageGroup
   private final Map<String, Map<AbstractCompactionTask, Future<CompactionTaskSummary>>>
@@ -76,7 +79,6 @@ public class CompactionTaskManager implements IService {
 
   private final RateLimiter mergeWriteRateLimiter = RateLimiter.create(Double.MAX_VALUE);
 
-  private final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
   private volatile boolean init = false;
 
   public static CompactionTaskManager getInstance() {
@@ -219,7 +221,8 @@ public class CompactionTaskManager implements IService {
       throws InterruptedException {
     if (init
         && !candidateCompactionTaskQueue.contains(compactionTask)
-        && !isTaskRunning(compactionTask)) {
+        && !isTaskRunning(compactionTask)
+        && candidateCompactionTaskQueue.size() < config.getCandidateCompactionTaskQueueSize()) {
       compactionTask.setSourceFilesToCompactionCandidate();
       candidateCompactionTaskQueue.put(compactionTask);
 
@@ -324,6 +327,10 @@ public class CompactionTaskManager implements IService {
     return getExecutingTaskCount() + candidateCompactionTaskQueue.size();
   }
 
+  public int getCompactionCandidateTaskCount() {
+    return candidateCompactionTaskQueue.size();
+  }
+
   public synchronized List<AbstractCompactionTask> getRunningCompactionTaskList() {
     List<AbstractCompactionTask> tasks = new ArrayList<>();
     for (Map<AbstractCompactionTask, Future<CompactionTaskSummary>> runningTaskMap :
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/comparator/DefaultCompactionTaskComparatorImpl.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/comparator/DefaultCompactionTaskComparatorImpl.java
index 334acae481..d2113a9796 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/comparator/DefaultCompactionTaskComparatorImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/schedule/comparator/DefaultCompactionTaskComparatorImpl.java
@@ -37,13 +37,21 @@ public class DefaultCompactionTaskComparatorImpl implements ICompactionTaskCompa
     if ((((o1 instanceof InnerSpaceCompactionTask) && (o2 instanceof CrossSpaceCompactionTask))
         || ((o2 instanceof InnerSpaceCompactionTask)
             && (o1 instanceof CrossSpaceCompactionTask)))) {
-      if (config.getCompactionPriority() != CompactionPriority.CROSS_INNER) {
+      if (config.getCompactionPriority() == CompactionPriority.CROSS_INNER) {
+        // priority is CROSS_INNER
+        return o1 instanceof CrossSpaceCompactionTask ? -1 : 1;
+      } else if (config.getCompactionPriority() == CompactionPriority.INNER_CROSS) {
+        // priority is INNER_CROSS
         return o1 instanceof InnerSpaceCompactionTask ? -1 : 1;
       } else {
-        return o1 instanceof CrossSpaceCompactionTask ? -1 : 1;
+        // priority is BALANCE
+        if (o1.getSerialId() != o2.getSerialId()) {
+          return o1.getSerialId() < o2.getSerialId() ? -1 : 1;
+        } else {
+          return o1 instanceof CrossSpaceCompactionTask ? -1 : 1;
+        }
       }
-    }
-    if (o1 instanceof InnerSpaceCompactionTask) {
+    } else if (o1 instanceof InnerSpaceCompactionTask) {
       return compareInnerSpaceCompactionTask(
           (InnerSpaceCompactionTask) o1, (InnerSpaceCompactionTask) o2);
     } else {
@@ -54,11 +62,6 @@ public class DefaultCompactionTaskComparatorImpl implements ICompactionTaskCompa
 
   public int compareInnerSpaceCompactionTask(
       InnerSpaceCompactionTask o1, InnerSpaceCompactionTask o2) {
-    if (o1.isSequence() ^ o2.isSequence()) {
-      // prioritize sequence file compaction
-      return o1.isSequence() ? -1 : 1;
-    }
-
     // if the sum of compaction count of the selected files are different
     // we prefer to execute task with smaller compaction count
     // this can reduce write amplification
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
index ab67fea640..23e1b07e87 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
@@ -48,17 +48,16 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
       LoggerFactory.getLogger(IoTDBConstant.COMPACTION_LOGGER_NAME);
   private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
 
-  private final int SELECT_WARN_THRESHOLD = 10;
   protected String logicalStorageGroupName;
   protected String dataRegionId;
   protected long timePartition;
   protected TsFileManager tsFileManager;
 
-  private long totalCost;
+  private boolean hasPrintedLog = false;
+
   private final long memoryBudget;
   private final int maxCrossCompactionFileNum;
   private final long maxCrossCompactionFileSize;
-  private int seqSelectedNum;
 
   private AbstractCompactionEstimator compactionEstimator;
 
@@ -174,7 +173,7 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
           unseqFile,
           targetSeqFiles,
           memoryCost,
-          totalCost);
+          taskResource.getTotalMemoryCost());
     }
     taskResource.sortSeqFiles(candidate.getSeqFiles());
     return taskResource;
@@ -215,9 +214,12 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
     return false;
   }
 
-  private boolean canSubmitCrossTask() {
-    return config.isEnableCrossSpaceCompaction()
-        && (CompactionTaskManager.currentTaskNum.get() < config.getCompactionThreadCount());
+  private boolean canSubmitCrossTask(
+      List<TsFileResource> sequenceFileList, List<TsFileResource> unsequenceFileList) {
+    return CompactionTaskManager.getInstance().getCompactionCandidateTaskCount()
+            < config.getCandidateCompactionTaskQueueSize()
+        && !sequenceFileList.isEmpty()
+        && !unsequenceFileList.isEmpty();
   }
 
   /**
@@ -231,12 +233,10 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
   @Override
   public List<CrossCompactionTaskResource> selectCrossSpaceTask(
       List<TsFileResource> sequenceFileList, List<TsFileResource> unsequenceFileList) {
-    if (!canSubmitCrossTask()) {
-      return Collections.emptyList();
-    }
-    if (sequenceFileList.isEmpty() || unsequenceFileList.isEmpty()) {
+    if (!canSubmitCrossTask(sequenceFileList, unsequenceFileList)) {
       return Collections.emptyList();
     }
+
     // TODO: (xingtanzjr) need to confirm what this ttl is used for
     long ttlLowerBound = System.currentTimeMillis() - Long.MAX_VALUE;
     // we record the variable `candidate` here is used for selecting more than one
@@ -245,12 +245,14 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
         new CrossSpaceCompactionCandidate(sequenceFileList, unsequenceFileList, ttlLowerBound);
     try {
       CrossCompactionTaskResource taskResources = selectOneTaskResources(candidate);
-      if (!taskResources.isValid()) {
+      if (!taskResources.isValid() && !hasPrintedLog) {
         LOGGER.info(
             "{} [Compaction] Cannot select any files, because source files may be occupied by other compaction threads.",
             logicalStorageGroupName + "-" + dataRegionId);
+        hasPrintedLog = true;
         return Collections.emptyList();
       }
+      hasPrintedLog = false;
 
       LOGGER.info(
           "{} [Compaction] submit a task with {} sequence file and {} unseq files",
@@ -264,9 +266,4 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
     }
     return Collections.emptyList();
   }
-
-  @Override
-  public List<Long> getCompactionMemoryCost() {
-    return Collections.singletonList(totalCost);
-  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
index e4b7111505..94d6f03f58 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
@@ -105,8 +105,11 @@ public class SizeTieredCompactionSelector
       TsFileNameGenerator.TsFileName currentName =
           TsFileNameGenerator.getTsFileName(currentFile.getTsFile().getName());
       if (currentName.getInnerCompactionCnt() != level) {
+        // meet files of another level
         if (selectedFileList.size() > 1) {
-          taskPriorityQueue.add(new Pair<>(new ArrayList<>(selectedFileList), selectedFileSize));
+          if (!addOneTaskToQueue(taskPriorityQueue, selectedFileList, selectedFileSize)) {
+            return false;
+          }
           shouldContinueToSearch = false;
         }
         selectedFileList = new ArrayList<>();
@@ -131,7 +134,9 @@ public class SizeTieredCompactionSelector
           || selectedFileList.size() >= config.getMaxInnerCompactionCandidateFileNum()) {
         // submit the task
         if (selectedFileList.size() > 1) {
-          taskPriorityQueue.add(new Pair<>(new ArrayList<>(selectedFileList), selectedFileSize));
+          if (!addOneTaskToQueue(taskPriorityQueue, selectedFileList, selectedFileSize)) {
+            return false;
+          }
           shouldContinueToSearch = false;
         }
         selectedFileList = new ArrayList<>();
@@ -142,12 +147,25 @@ public class SizeTieredCompactionSelector
     // if next time partition exists
     // submit a merge task even it does not meet the requirement for file num or file size
     if (hasNextTimePartition && selectedFileList.size() > 1) {
-      taskPriorityQueue.add(new Pair<>(new ArrayList<>(selectedFileList), selectedFileSize));
+      addOneTaskToQueue(taskPriorityQueue, selectedFileList, selectedFileSize);
       shouldContinueToSearch = false;
     }
     return shouldContinueToSearch;
   }
 
+  private boolean addOneTaskToQueue(
+      PriorityQueue<Pair<List<TsFileResource>, Long>> taskPriorityQueue,
+      List<TsFileResource> selectedFileList,
+      long selectedFileSize) {
+    if (CompactionTaskManager.getInstance().getCompactionCandidateTaskCount()
+            + taskPriorityQueue.size()
+        < config.getCandidateCompactionTaskQueueSize()) {
+      taskPriorityQueue.add(new Pair<>(new ArrayList<>(selectedFileList), selectedFileSize));
+      return true;
+    }
+    return false;
+  }
+
   /**
    * This method searches for a batch of files to be compacted from layer 0 to the highest layer. If
    * there are more than a batch of files to be merged on a certain layer, it does not search to
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
index 345ce54ea3..2b21345957 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
@@ -139,11 +139,9 @@ public class CrossSpaceCompactionCandidate {
   private List<TsFileResourceCandidate> filterUnseqResource(List<TsFileResource> unseqResources) {
     List<TsFileResourceCandidate> ret = new ArrayList<>();
     for (TsFileResource resource : unseqResources) {
-      if (resource.getStatus() != TsFileResourceStatus.CLOSED
-          || !resource.getTsFile().exists()
-          || resource.isDeleted()) {
+      if (resource.getStatus() != TsFileResourceStatus.CLOSED || !resource.getTsFile().exists()) {
         break;
-      } else if (!resource.isDeleted() && resource.stillLives(ttlLowerBound)) {
+      } else if (resource.stillLives(ttlLowerBound)) {
         ret.add(new TsFileResourceCandidate(resource));
       }
     }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
index 4cbdee43e9..de737cafbe 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
@@ -87,7 +87,7 @@ public class CompactionSchedulerTest {
     EnvironmentUtils.cleanAllDir();
     File basicOutputDir = new File(TestConstant.BASE_OUTPUT_PATH);
 
-    IoTDBDescriptor.getInstance().getConfig().setCompactionPriority(CompactionPriority.INNER_CROSS);
+    IoTDBDescriptor.getInstance().getConfig().setCompactionPriority(CompactionPriority.BALANCE);
     if (!basicOutputDir.exists()) {
       assertTrue(basicOutputDir.mkdirs());
     }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerWithFastPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerWithFastPerformerTest.java
index 2fd1f03998..15dd291aba 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerWithFastPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerWithFastPerformerTest.java
@@ -88,7 +88,7 @@ public class CompactionSchedulerWithFastPerformerTest {
     EnvironmentUtils.cleanAllDir();
     File basicOutputDir = new File(TestConstant.BASE_OUTPUT_PATH);
 
-    IoTDBDescriptor.getInstance().getConfig().setCompactionPriority(CompactionPriority.INNER_CROSS);
+    IoTDBDescriptor.getInstance().getConfig().setCompactionPriority(CompactionPriority.BALANCE);
     if (!basicOutputDir.exists()) {
       assertTrue(basicOutputDir.mkdirs());
     }