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());
}