This is an automated email from the ASF dual-hosted git repository.
jiangtian 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 ce0c090c553 Share device info in compaction schedule (#13150)
ce0c090c553 is described below
commit ce0c090c553b36d3b5e7d5de15f8405169f63499
Author: shuwenwei <[email protected]>
AuthorDate: Wed Aug 14 09:54:14 2024 +0800
Share device info in compaction schedule (#13150)
* share device time index in compaction schedule
* fix
* fix bug
---
.../db/service/metrics/CompactionMetrics.java | 14 +++---
.../db/storageengine/dataregion/DataRegion.java | 55 +++++++++++++---------
...Summary.java => CompactionScheduleContext.java} | 28 ++++++++++-
.../compaction/schedule/CompactionScheduler.java | 47 ++++++++++--------
.../constant/InnerSequenceCompactionSelector.java | 4 +-
.../InnerUnsequenceCompactionSelector.java | 4 +-
.../impl/RewriteCrossSpaceCompactionSelector.java | 43 +++++++++++++++--
.../utils/CrossSpaceCompactionCandidate.java | 26 ++++++++--
.../selector/utils/TsFileResourceCandidate.java | 13 ++++-
.../iotdb/db/storageengine/dataregion/TTLTest.java | 6 +--
...eCompactionWithFastPerformerValidationTest.java | 2 +-
.../cross/InsertionCrossSpaceCompactionTest.java | 4 +-
.../inner/InnerCompactionSchedulerTest.java | 8 ++--
.../repair/RepairUnsortedFileCompactionTest.java | 8 ++--
14 files changed, 187 insertions(+), 75 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
index f3f464b20ef..1e1afdbad96 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/CompactionMetrics.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.service.metric.enums.Tag;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskStatus;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CompactionTaskSummary;
-import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleSummary;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionIoDataType;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
@@ -813,14 +813,14 @@ public class CompactionMetrics implements IMetricSet {
private Histogram settleCompactionTaskSelectedFileNum =
DoNothingMetricManager.DO_NOTHING_HISTOGRAM;
- public void updateCompactionTaskSelectionNum(CompactionScheduleSummary
summary) {
-
seqInnerSpaceCompactionTaskSelectedNum.set(summary.getSubmitSeqInnerSpaceCompactionTaskNum());
+ public void updateCompactionTaskSelectionNum(CompactionScheduleContext
context) {
+
seqInnerSpaceCompactionTaskSelectedNum.set(context.getSubmitSeqInnerSpaceCompactionTaskNum());
unseqInnerSpaceCompactionTaskSelectedNum.set(
- summary.getSubmitUnseqInnerSpaceCompactionTaskNum());
-
crossInnerSpaceCompactionTaskSelectedNum.set(summary.getSubmitCrossSpaceCompactionTaskNum());
+ context.getSubmitUnseqInnerSpaceCompactionTaskNum());
+
crossInnerSpaceCompactionTaskSelectedNum.set(context.getSubmitCrossSpaceCompactionTaskNum());
insertionCrossSpaceCompactionTaskSelectedNum.set(
- summary.getSubmitInsertionCrossSpaceCompactionTaskNum());
-
settleCompactionTaskSelectedNum.set(summary.getSubmitSettleCompactionTaskNum());
+ context.getSubmitInsertionCrossSpaceCompactionTaskNum());
+
settleCompactionTaskSelectedNum.set(context.getSubmitSettleCompactionTaskNum());
}
public void updateCompactionTaskSelectionTimeCost(CompactionTaskType
taskType, long time) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index ed24c9be37e..4ba71db22d2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -77,7 +77,7 @@ import
org.apache.iotdb.db.storageengine.buffer.TimeSeriesMetadataCache;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.recover.CompactionRecoverManager;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.AbstractCompactionTask;
-import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleSummary;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleTaskManager;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduler;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
@@ -2597,11 +2597,11 @@ public class DataRegion implements IDataRegionForQuery {
// Sort the time partition from largest to smallest
timePartitions.sort(Comparator.reverseOrder());
- CompactionScheduleSummary summary = new CompactionScheduleSummary();
+ CompactionScheduleContext context = new CompactionScheduleContext();
// schedule insert compaction
- trySubmitCount += executeInsertionCompaction(timePartitions);
- summary.incrementSubmitTaskNum(CompactionTaskType.INSERTION,
trySubmitCount);
+ trySubmitCount += executeInsertionCompaction(timePartitions, context);
+ context.incrementSubmitTaskNum(CompactionTaskType.INSERTION,
trySubmitCount);
// schedule the other compactions
if (trySubmitCount == 0) {
@@ -2611,14 +2611,15 @@ public class DataRegion implements IDataRegionForQuery {
CompactionScheduler.sharedLockCompactionSelection();
try {
trySubmitCount +=
- CompactionScheduler.scheduleCompaction(tsFileManager,
timePartition, summary);
+ CompactionScheduler.scheduleCompaction(tsFileManager,
timePartition, context);
} finally {
+ context.clearTimePartitionDeviceInfoCache();
CompactionScheduler.sharedUnlockCompactionSelection();
}
}
}
- if (summary.hasSubmitTask()) {
-
CompactionMetrics.getInstance().updateCompactionTaskSelectionNum(summary);
+ if (context.hasSubmitTask()) {
+
CompactionMetrics.getInstance().updateCompactionTaskSelectionNum(context);
}
} catch (InterruptedException e) {
throw e;
@@ -2639,7 +2640,7 @@ public class DataRegion implements IDataRegionForQuery {
logger.info("[TTL] {}-{} Start ttl checking.", databaseName, dataRegionId);
int trySubmitCount = 0;
try {
- CompactionScheduleSummary summary = new CompactionScheduleSummary();
+ CompactionScheduleContext context = new CompactionScheduleContext();
List<Long> timePartitions = new
ArrayList<>(tsFileManager.getTimePartitions());
// Sort the time partition from smallest to largest
Collections.sort(timePartitions);
@@ -2649,20 +2650,21 @@ public class DataRegion implements IDataRegionForQuery {
try {
trySubmitCount +=
CompactionScheduler.tryToSubmitSettleCompactionTask(
- tsFileManager, timePartition, summary, true);
+ tsFileManager, timePartition, context, true);
} finally {
+ context.clearTimePartitionDeviceInfoCache();
CompactionScheduler.sharedUnlockCompactionSelection();
}
}
- if (summary.hasSubmitTask()) {
-
CompactionMetrics.getInstance().updateCompactionTaskSelectionNum(summary);
+ if (context.hasSubmitTask()) {
+
CompactionMetrics.getInstance().updateCompactionTaskSelectionNum(context);
}
logger.info(
"[TTL] {}-{} Totally select {} all-outdated files and {}
partial-outdated files.",
databaseName,
dataRegionId,
- summary.getFullyDirtyFileNum(),
- summary.getPartiallyDirtyFileNum());
+ context.getFullyDirtyFileNum(),
+ context.getPartiallyDirtyFileNum());
} catch (InterruptedException e) {
throw e;
} catch (Throwable e) {
@@ -2673,24 +2675,31 @@ public class DataRegion implements IDataRegionForQuery {
return trySubmitCount;
}
- protected int executeInsertionCompaction(List<Long> timePartitions) throws
InterruptedException {
+ protected int executeInsertionCompaction(
+ List<Long> timePartitions, CompactionScheduleContext context) throws
InterruptedException {
int trySubmitCount = 0;
CompactionScheduler.sharedLockCompactionSelection();
try {
while (true) {
int currentSubmitCount = 0;
- Phaser insertionTaskPhaser = new Phaser(1);
for (long timePartition : timePartitions) {
- currentSubmitCount +=
- CompactionScheduler.scheduleInsertionCompaction(
- tsFileManager, timePartition, insertionTaskPhaser);
+ while (true) {
+ Phaser insertionTaskPhaser = new Phaser(1);
+ int selectedTaskNum =
+ CompactionScheduler.scheduleInsertionCompaction(
+ tsFileManager, timePartition, insertionTaskPhaser,
context);
+
insertionTaskPhaser.awaitAdvanceInterruptibly(insertionTaskPhaser.arrive());
+ currentSubmitCount += selectedTaskNum;
+ if (selectedTaskNum <= 0) {
+ break;
+ }
+ }
+ context.clearTimePartitionDeviceInfoCache();
}
- trySubmitCount += currentSubmitCount;
-
insertionTaskPhaser.awaitAdvanceInterruptibly(insertionTaskPhaser.arrive());
- if (currentSubmitCount != 0) {
- continue;
+ if (currentSubmitCount <= 0) {
+ break;
}
- break;
+ trySubmitCount += currentSubmitCount;
}
} catch (InterruptedException e) {
throw e;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleSummary.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleContext.java
similarity index 80%
rename from
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleSummary.java
rename to
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleContext.java
index bb2d31455b0..205d6b620a4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleSummary.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleContext.java
@@ -22,8 +22,15 @@ package
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.AbstractCompactionTask;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.SettleCompactionTask;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.utils.DeviceInfo;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-public class CompactionScheduleSummary {
+import org.apache.tsfile.file.metadata.IDeviceID;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class CompactionScheduleContext {
private int submitSeqInnerSpaceCompactionTaskNum = 0;
private int submitUnseqInnerSpaceCompactionTaskNum = 0;
private int submitCrossSpaceCompactionTaskNum = 0;
@@ -37,6 +44,25 @@ public class CompactionScheduleSummary {
// end region
+ private final Map<TsFileResource, Map<IDeviceID, DeviceInfo>>
partitionFileDeviceInfoCache;
+
+ public CompactionScheduleContext() {
+ this.partitionFileDeviceInfoCache = new HashMap<>();
+ }
+
+ public void addResourceDeviceTimeIndex(
+ TsFileResource tsFileResource, Map<IDeviceID, DeviceInfo> deviceInfoMap)
{
+ partitionFileDeviceInfoCache.put(tsFileResource, deviceInfoMap);
+ }
+
+ public Map<IDeviceID, DeviceInfo> getResourceDeviceInfo(TsFileResource
resource) {
+ return partitionFileDeviceInfoCache.get(resource);
+ }
+
+ public void clearTimePartitionDeviceInfoCache() {
+ partitionFileDeviceInfoCache.clear();
+ }
+
public void incrementSubmitTaskNum(CompactionTaskType taskType, int num) {
switch (taskType) {
case INNER_SEQ:
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
index 43f706173bb..589ea57c6c3 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
@@ -90,11 +90,11 @@ public class CompactionScheduler {
*
* @param tsFileManager tsfileManager that contains source files
* @param timePartition the time partition to execute the selection
- * @param summary the summary of compaction schedule
+ * @param context the context of compaction schedule
* @return the count of submitted task
*/
public static int scheduleCompaction(
- TsFileManager tsFileManager, long timePartition,
CompactionScheduleSummary summary)
+ TsFileManager tsFileManager, long timePartition,
CompactionScheduleContext context)
throws InterruptedException {
if (!tsFileManager.isAllowCompaction()) {
return 0;
@@ -104,12 +104,12 @@ public class CompactionScheduler {
int trySubmitCount = 0;
try {
trySubmitCount +=
- tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
true, summary);
+ tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
true, context);
trySubmitCount +=
- tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
false, summary);
- trySubmitCount += tryToSubmitCrossSpaceCompactionTask(tsFileManager,
timePartition, summary);
+ tryToSubmitInnerSpaceCompactionTask(tsFileManager, timePartition,
false, context);
+ trySubmitCount += tryToSubmitCrossSpaceCompactionTask(tsFileManager,
timePartition, context);
trySubmitCount +=
- tryToSubmitSettleCompactionTask(tsFileManager, timePartition,
summary, false);
+ tryToSubmitSettleCompactionTask(tsFileManager, timePartition,
context, false);
} catch (InterruptedException e) {
throw e;
} catch (Throwable e) {
@@ -121,18 +121,22 @@ public class CompactionScheduler {
@TestOnly
public static void scheduleCompaction(TsFileManager tsFileManager, long
timePartition)
throws InterruptedException {
- scheduleCompaction(tsFileManager, timePartition, new
CompactionScheduleSummary());
+ scheduleCompaction(tsFileManager, timePartition, new
CompactionScheduleContext());
}
public static int scheduleInsertionCompaction(
- TsFileManager tsFileManager, long timePartition, Phaser
insertionTaskPhaser)
+ TsFileManager tsFileManager,
+ long timePartition,
+ Phaser insertionTaskPhaser,
+ CompactionScheduleContext context)
throws InterruptedException {
if (!tsFileManager.isAllowCompaction()) {
return 0;
}
int trySubmitCount = 0;
trySubmitCount +=
- tryToSubmitInsertionCompactionTask(tsFileManager, timePartition,
insertionTaskPhaser);
+ tryToSubmitInsertionCompactionTask(
+ tsFileManager, timePartition, insertionTaskPhaser, context);
return trySubmitCount;
}
@@ -140,7 +144,7 @@ public class CompactionScheduler {
TsFileManager tsFileManager,
long timePartition,
boolean sequence,
- CompactionScheduleSummary summary)
+ CompactionScheduleContext context)
throws InterruptedException {
if ((!config.isEnableSeqSpaceCompaction() && sequence)
|| (!config.isEnableUnseqSpaceCompaction() && !sequence)) {
@@ -157,12 +161,14 @@ public class CompactionScheduler {
innerSpaceCompactionSelector =
config
.getInnerSequenceCompactionSelector()
- .createInstance(storageGroupName, dataRegionId, timePartition,
tsFileManager);
+ .createInstance(
+ storageGroupName, dataRegionId, timePartition,
tsFileManager, context);
} else {
innerSpaceCompactionSelector =
config
.getInnerUnsequenceCompactionSelector()
- .createInstance(storageGroupName, dataRegionId, timePartition,
tsFileManager);
+ .createInstance(
+ storageGroupName, dataRegionId, timePartition,
tsFileManager, context);
}
long startTime = System.currentTimeMillis();
List<InnerSpaceCompactionTask> innerSpaceTaskList =
@@ -179,7 +185,7 @@ public class CompactionScheduler {
// the name of this variable is trySubmitCount, because the task submitted
to the queue could be
// evicted due to the low priority of the task
int trySubmitCount = addTaskToWaitingQueue(innerSpaceTaskList);
- summary.incrementSubmitTaskNum(
+ context.incrementSubmitTaskNum(
sequence ? CompactionTaskType.INNER_SEQ :
CompactionTaskType.INNER_UNSEQ, trySubmitCount);
return trySubmitCount;
}
@@ -218,7 +224,10 @@ public class CompactionScheduler {
}
private static int tryToSubmitInsertionCompactionTask(
- TsFileManager tsFileManager, long timePartition, Phaser
insertionTaskPhaser)
+ TsFileManager tsFileManager,
+ long timePartition,
+ Phaser insertionTaskPhaser,
+ CompactionScheduleContext context)
throws InterruptedException {
if (!config.isEnableCrossSpaceCompaction()) {
return 0;
@@ -227,7 +236,7 @@ public class CompactionScheduler {
String dataRegionId = tsFileManager.getDataRegionId();
RewriteCrossSpaceCompactionSelector selector =
new RewriteCrossSpaceCompactionSelector(
- logicalStorageGroupName, dataRegionId, timePartition,
tsFileManager);
+ logicalStorageGroupName, dataRegionId, timePartition,
tsFileManager, context);
List<CrossCompactionTaskResource> selectedTasks =
selector.selectInsertionCrossSpaceTask(
@@ -253,7 +262,7 @@ public class CompactionScheduler {
}
private static int tryToSubmitCrossSpaceCompactionTask(
- TsFileManager tsFileManager, long timePartition,
CompactionScheduleSummary summary)
+ TsFileManager tsFileManager, long timePartition,
CompactionScheduleContext context)
throws InterruptedException {
if (!config.isEnableCrossSpaceCompaction()) {
return 0;
@@ -297,14 +306,14 @@ public class CompactionScheduler {
task.setCompactionConfigVersion(compactionConfigVersionWhenSelectTask);
trySubmitCount = addTaskToWaitingQueue(Collections.singletonList(task));
}
- summary.incrementSubmitTaskNum(CompactionTaskType.CROSS, trySubmitCount);
+ context.incrementSubmitTaskNum(CompactionTaskType.CROSS, trySubmitCount);
return trySubmitCount;
}
public static int tryToSubmitSettleCompactionTask(
TsFileManager tsFileManager,
long timePartition,
- CompactionScheduleSummary summary,
+ CompactionScheduleContext context,
boolean heavySelect)
throws InterruptedException {
if (!config.isEnableSeqSpaceCompaction() &&
!config.isEnableUnseqSpaceCompaction()) {
@@ -335,7 +344,7 @@ public class CompactionScheduler {
int trySubmitCount = 0;
for (AbstractCompactionTask task : taskList) {
if (CompactionTaskManager.getInstance().addTaskToWaitingQueue(task)) {
- summary.updateTTLInfo(task);
+ context.updateTTLInfo(task);
trySubmitCount++;
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerSequenceCompactionSelector.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerSequenceCompactionSelector.java
index cc27d4f2774..58b04bf9eb0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerSequenceCompactionSelector.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerSequenceCompactionSelector.java
@@ -19,6 +19,7 @@
package
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.constant;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.IInnerSeqSpaceSelector;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.impl.SizeTieredCompactionSelector;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
@@ -39,7 +40,8 @@ public enum InnerSequenceCompactionSelector {
String storageGroupName,
String dataRegionId,
long timePartition,
- TsFileManager tsFileManager) {
+ TsFileManager tsFileManager,
+ CompactionScheduleContext context) {
switch (this) {
case SIZE_TIERED:
default:
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerUnsequenceCompactionSelector.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerUnsequenceCompactionSelector.java
index b35ef274a51..722a852a62e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerUnsequenceCompactionSelector.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/constant/InnerUnsequenceCompactionSelector.java
@@ -19,6 +19,7 @@
package
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.constant;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.IInnerUnseqSpaceSelector;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.impl.SizeTieredCompactionSelector;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
@@ -40,7 +41,8 @@ public enum InnerUnsequenceCompactionSelector {
String storageGroupName,
String dataRegionId,
long timePartition,
- TsFileManager tsFileManager) {
+ TsFileManager tsFileManager,
+ CompactionScheduleContext context) {
switch (this) {
case SIZE_TIERED:
default:
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
index 30a59935588..2c66da65d4e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.MergeException;
import org.apache.iotdb.db.service.metrics.CompactionMetrics;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.ICompactionSelector;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.ICrossSpaceSelector;
@@ -38,6 +39,7 @@ import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.utils.Ts
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
+import
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
import org.apache.tsfile.exception.StopReadTsFileByInterruptException;
@@ -63,12 +65,14 @@ public class RewriteCrossSpaceCompactionSelector implements
ICrossSpaceSelector
protected TsFileManager tsFileManager;
private static boolean hasPrintedLog = false;
+ private static int maxDeserializedFileNumToCheckInsertionCandidateValid =
500;
private final long memoryBudget;
private final int maxCrossCompactionFileNum;
private final long maxCrossCompactionFileSize;
private final AbstractCrossSpaceEstimator compactionEstimator;
+ private CompactionScheduleContext context;
public RewriteCrossSpaceCompactionSelector(
String logicalStorageGroupName,
@@ -93,6 +97,17 @@ public class RewriteCrossSpaceCompactionSelector implements
ICrossSpaceSelector
(AbstractCrossSpaceEstimator)
ICompactionSelector.getCompactionEstimator(
IoTDBDescriptor.getInstance().getConfig().getCrossCompactionPerformer(), false);
+ this.context = null;
+ }
+
+ public RewriteCrossSpaceCompactionSelector(
+ String logicalStorageGroupName,
+ String dataRegionId,
+ long timePartition,
+ TsFileManager tsFileManager,
+ CompactionScheduleContext context) {
+ this(logicalStorageGroupName, dataRegionId, timePartition, tsFileManager);
+ this.context = context;
}
/**
@@ -335,7 +350,8 @@ public class RewriteCrossSpaceCompactionSelector implements
ICrossSpaceSelector
// CrossCompactionTaskResources in this method.
// Add read lock for candidate source files to avoid being deleted during
the selection.
CrossSpaceCompactionCandidate candidate =
- new CrossSpaceCompactionCandidate(sequenceFileList,
unsequenceFileList, ttlLowerBound);
+ new CrossSpaceCompactionCandidate(
+ sequenceFileList, unsequenceFileList, ttlLowerBound, context);
try {
CrossCompactionTaskResource taskResources;
if (isInsertionTask) {
@@ -554,7 +570,10 @@ public class RewriteCrossSpaceCompactionSelector
implements ICrossSpaceSelector
}
for (int i = 0; i < selectedUnseqFileIndex; i++) {
TsFileResourceCandidate unseqFile = unseqFiles.get(i);
- if (isOverlap(selectedUnseqFile, unseqFile)) {
+ if (isOverlap(
+ selectedUnseqFile,
+ unseqFile,
+ selectedUnseqFileIndex >
maxDeserializedFileNumToCheckInsertionCandidateValid)) {
selectedUnseqFile.resource.setInsertionCompactionTaskCandidate(
InsertionCompactionCandidateStatus.NOT_VALID);
return false;
@@ -566,17 +585,33 @@ public class RewriteCrossSpaceCompactionSelector
implements ICrossSpaceSelector
}
private boolean isOverlap(
- TsFileResourceCandidate candidate1, TsFileResourceCandidate
candidate2) throws IOException {
+ TsFileResourceCandidate candidate1,
+ TsFileResourceCandidate candidate2,
+ boolean loadDeviceTimeIndex)
+ throws IOException {
TimeRange timeRangeOfFile1 =
new TimeRange(
candidate1.resource.getFileStartTime(),
candidate1.resource.getFileEndTime());
TimeRange timeRangeOfFile2 =
new TimeRange(
candidate2.resource.getFileStartTime(),
candidate2.resource.getFileEndTime());
- if (!timeRangeOfFile1.overlaps(timeRangeOfFile2)) {
+ boolean fileTimeOverlap = timeRangeOfFile1.overlaps(timeRangeOfFile2);
+ if (!fileTimeOverlap) {
return false;
}
+ // TimeIndex may be degraded after this check, but it will not affect
the correctness of task
+ // selection
+ boolean candidate1NeedDeserialize =
+ !candidate1.hasDetailedDeviceInfo()
+ && candidate1.resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE;
+ boolean candidate2NeedDeserialize =
+ !candidate2.hasDetailedDeviceInfo()
+ && candidate2.resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE;
+ if (!loadDeviceTimeIndex && (candidate1NeedDeserialize ||
candidate2NeedDeserialize)) {
+ return true;
+ }
+
for (DeviceInfo device : candidate2.getDevices()) {
IDeviceID deviceId = device.deviceId;
if (!candidate1.containsDevice(deviceId)) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
index de75a3d9d21..e4bff941485 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
@@ -19,6 +19,8 @@
package org.apache.iotdb.db.storageengine.dataregion.compaction.selector.utils;
+import org.apache.iotdb.commons.utils.TestOnly;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
@@ -40,19 +42,33 @@ public class CrossSpaceCompactionCandidate {
private int nextUnseqFileIndex;
private CrossCompactionTaskResourceSplit nextSplit;
private long ttlLowerBound = Long.MIN_VALUE;
+ private CompactionScheduleContext context = null;
+ @TestOnly
public CrossSpaceCompactionCandidate(
List<TsFileResource> seqFiles, List<TsFileResource> unseqFiles) {
- init(seqFiles, unseqFiles);
+ init(seqFiles, unseqFiles, null);
}
public CrossSpaceCompactionCandidate(
List<TsFileResource> seqFiles, List<TsFileResource> unseqFiles, long
ttlLowerBound) {
+ this(seqFiles, unseqFiles, ttlLowerBound, null);
+ }
+
+ public CrossSpaceCompactionCandidate(
+ List<TsFileResource> seqFiles,
+ List<TsFileResource> unseqFiles,
+ long ttlLowerBound,
+ CompactionScheduleContext context) {
this.ttlLowerBound = ttlLowerBound;
- init(seqFiles, unseqFiles);
+ init(seqFiles, unseqFiles, context);
}
- private void init(List<TsFileResource> seqFiles, List<TsFileResource>
unseqFiles) {
+ private void init(
+ List<TsFileResource> seqFiles,
+ List<TsFileResource> unseqFiles,
+ CompactionScheduleContext context) {
+ this.context = context;
this.seqFiles = copySeqResource(seqFiles);
// it is necessary that unseqFiles are all available
this.unseqFiles = filterUnseqResource(unseqFiles);
@@ -157,7 +173,7 @@ public class CrossSpaceCompactionCandidate {
private List<TsFileResourceCandidate> copySeqResource(List<TsFileResource>
seqFiles) {
List<TsFileResourceCandidate> ret = new ArrayList<>();
for (TsFileResource resource : seqFiles) {
- ret.add(new TsFileResourceCandidate(resource));
+ ret.add(new TsFileResourceCandidate(resource, context));
}
return ret;
}
@@ -174,7 +190,7 @@ public class CrossSpaceCompactionCandidate {
if (resource.getStatus() != TsFileResourceStatus.NORMAL) {
break;
} else if (resource.stillLives(ttlLowerBound)) {
- ret.add(new TsFileResourceCandidate(resource));
+ ret.add(new TsFileResourceCandidate(resource, context));
}
}
return ret;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
index 27ea59ba4b3..f89a778be21 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.storageengine.dataregion.compaction.selector.utils;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileRepairStatus;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
@@ -46,8 +47,10 @@ public class TsFileResourceCandidate {
private Map<IDeviceID, DeviceInfo> deviceInfoMap;
private boolean hasDetailedDeviceInfo;
+ private CompactionScheduleContext compactionScheduleContext;
- protected TsFileResourceCandidate(TsFileResource tsFileResource) {
+ protected TsFileResourceCandidate(
+ TsFileResource tsFileResource, CompactionScheduleContext context) {
this.resource = tsFileResource;
this.selected = false;
// although we do the judgement here, the task should be validated before
executing because
@@ -55,6 +58,7 @@ public class TsFileResourceCandidate {
this.isValidCandidate =
tsFileResource.getStatus() == TsFileResourceStatus.NORMAL
&& tsFileResource.getTsFileRepairStatus() ==
TsFileRepairStatus.NORMAL;
+ this.compactionScheduleContext = context;
}
/**
@@ -67,6 +71,10 @@ public class TsFileResourceCandidate {
}
private void prepareDeviceInfos() throws IOException {
+ if (deviceInfoMap == null && compactionScheduleContext != null) {
+ // get device info from cache
+ deviceInfoMap =
compactionScheduleContext.getResourceDeviceInfo(this.resource);
+ }
if (deviceInfoMap != null) {
return;
}
@@ -98,6 +106,9 @@ public class TsFileResourceCandidate {
}
}
hasDetailedDeviceInfo = true;
+ if (compactionScheduleContext != null) {
+ compactionScheduleContext.addResourceDeviceTimeIndex(this.resource,
deviceInfoMap);
+ }
}
public void markAsSelected() {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
index 3d6f49e6729..04c45845eef 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
@@ -44,7 +44,7 @@ import
org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTTLStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.UnSetTTLStatement;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.reader.IDataBlockReader;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.reader.SeriesDataBlockReader;
-import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleSummary;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduler;
import
org.apache.iotdb.db.storageengine.dataregion.flush.TsFileFlushPolicy.DirectFlushPolicy;
import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
@@ -328,7 +328,7 @@ public class TTLTest {
DataNodeTTLCache.getInstance().setTTL(sg1, 500);
for (long timePartition : dataRegion.getTimePartitions()) {
CompactionScheduler.tryToSubmitSettleCompactionTask(
- dataRegion.getTsFileManager(), timePartition, new
CompactionScheduleSummary(), true);
+ dataRegion.getTsFileManager(), timePartition, new
CompactionScheduleContext(), true);
}
long totalWaitingTime = 0;
while (dataRegion.getTsFileManager().getTsFileList(true).size()
@@ -419,7 +419,7 @@ public class TTLTest {
DataNodeTTLCache.getInstance().setTTL(sg1, 1);
for (long timePartition : dataRegion.getTimePartitions()) {
CompactionScheduler.tryToSubmitSettleCompactionTask(
- dataRegion.getTsFileManager(), timePartition, new
CompactionScheduleSummary(), true);
+ dataRegion.getTsFileManager(), timePartition, new
CompactionScheduleContext(), true);
}
long totalWaitingTime = 0;
while (dataRegion.getTsFileManager().getTsFileList(true).size()
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
index cafe8ac2768..1eff75fe6b0 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
@@ -2260,7 +2260,7 @@ public class
CrossSpaceCompactionWithFastPerformerValidationTest extends Abstrac
IoTDBDescriptor.getInstance()
.getConfig()
.getInnerSequenceCompactionSelector()
- .createInstance(COMPACTION_TEST_SG, "0", 0, tsFileManager);
+ .createInstance(COMPACTION_TEST_SG, "0", 0, tsFileManager, null);
Assert.assertEquals(0,
innerSelector.selectInnerSpaceTask(targetResources).size());
// first compaction task finishes successfully
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
index e4082bbb73b..b286f7bdfa4 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
@@ -26,6 +26,7 @@ import
org.apache.iotdb.db.storageengine.dataregion.DataRegion;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.AbstractCompactionTask;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InsertionCrossSpaceCompactionTask;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionWorker;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.comparator.DefaultCompactionTaskComparatorImpl;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.impl.RewriteCrossSpaceCompactionSelector;
@@ -513,7 +514,8 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
public int executeInsertionCompaction() throws InterruptedException {
return super.executeInsertionCompaction(
- new ArrayList<>(this.getTsFileManager().getTimePartitions()));
+ new ArrayList<>(this.getTsFileManager().getTimePartitions()),
+ new CompactionScheduleContext());
}
}
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
index 3237ccb57ae..de0937ea95c 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.StorageEngineException;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
-import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleSummary;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduler;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
@@ -96,7 +96,7 @@ public class InnerCompactionSchedulerTest extends
AbstractCompactionTest {
tsFileManager.addAll(seqResources, true);
CompactionScheduler.tryToSubmitInnerSpaceCompactionTask(
- tsFileManager, 0L, true, new CompactionScheduleSummary());
+ tsFileManager, 0L, true, new CompactionScheduleContext());
try {
Thread.sleep(5000);
} catch (Exception e) {
@@ -118,7 +118,7 @@ public class InnerCompactionSchedulerTest extends
AbstractCompactionTest {
TsFileManager tsFileManager = new TsFileManager("testSG", "0", "tmp");
tsFileManager.addAll(seqResources, true);
CompactionScheduler.tryToSubmitInnerSpaceCompactionTask(
- tsFileManager, 0L, true, new CompactionScheduleSummary());
+ tsFileManager, 0L, true, new CompactionScheduleContext());
long waitingTime = 0;
while (CompactionTaskManager.getInstance().getExecutingTaskCount() != 0) {
@@ -148,7 +148,7 @@ public class InnerCompactionSchedulerTest extends
AbstractCompactionTest {
TsFileManager tsFileManager = new TsFileManager("testSG", "0", "tmp");
tsFileManager.addAll(seqResources, true);
CompactionScheduler.tryToSubmitInnerSpaceCompactionTask(
- tsFileManager, 0L, true, new CompactionScheduleSummary());
+ tsFileManager, 0L, true, new CompactionScheduleContext());
long waitingTime = 0;
while (CompactionTaskManager.getInstance().getExecutingTaskCount() != 0) {
try {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
index 27b12ce29fc..4d422ad1d64 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
@@ -31,7 +31,7 @@ import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CrossSpaceCompactionTask;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.RepairUnsortedFileCompactionTask;
-import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleSummary;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleTaskManager;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduler;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
@@ -320,7 +320,7 @@ public class RepairUnsortedFileCompactionTest extends
AbstractRepairDataTest {
long initialFinishedCompactionTaskNum =
CompactionTaskManager.getInstance().getFinishedTaskNum();
- CompactionScheduleSummary summary = new CompactionScheduleSummary();
+ CompactionScheduleContext summary = new CompactionScheduleContext();
CompactionScheduler.scheduleCompaction(tsFileManager, 0, summary);
Assert.assertEquals(2, summary.getSubmitSeqInnerSpaceCompactionTaskNum());
@@ -395,7 +395,7 @@ public class RepairUnsortedFileCompactionTest extends
AbstractRepairDataTest {
long initialFinishedCompactionTaskNum =
CompactionTaskManager.getInstance().getFinishedTaskNum();
- CompactionScheduleSummary summary = new CompactionScheduleSummary();
+ CompactionScheduleContext summary = new CompactionScheduleContext();
CompactionScheduler.scheduleCompaction(tsFileManager, 0, summary);
Assert.assertEquals(2,
summary.getSubmitUnseqInnerSpaceCompactionTaskNum());
@@ -471,7 +471,7 @@ public class RepairUnsortedFileCompactionTest extends
AbstractRepairDataTest {
long initialFinishedCompactionTaskNum =
CompactionTaskManager.getInstance().getFinishedTaskNum();
- CompactionScheduleSummary summary = new CompactionScheduleSummary();
+ CompactionScheduleContext summary = new CompactionScheduleContext();
CompactionScheduler.scheduleCompaction(tsFileManager, 0, summary);
Assert.assertEquals(1, summary.getSubmitSeqInnerSpaceCompactionTaskNum());
Assert.assertEquals(1,
summary.getSubmitUnseqInnerSpaceCompactionTaskNum());