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 ad473d9766d Add 'deserialize_resource' metric item in compaction
(#13298)
ad473d9766d is described below
commit ad473d9766d828767d806dc1e2a3697538b6edcf
Author: shuwenwei <[email protected]>
AuthorDate: Tue Aug 27 09:36:49 2024 +0800
Add 'deserialize_resource' metric item in compaction (#13298)
* add 'deserialize_resource' metric
* fix tag
---
.../db/service/metrics/CompactionMetrics.java | 331 ++++++---------------
.../RepairUnsortedFileCompactionPerformer.java | 3 +-
.../compaction/execute/utils/CompactionUtils.java | 17 ++
.../compaction/repair/RepairDataFileScanUtil.java | 3 +-
.../estimator/AbstractCompactionEstimator.java | 3 +-
.../selector/impl/SettleSelectorImpl.java | 2 +-
.../selector/utils/TsFileResourceCandidate.java | 3 +-
.../dataregion/utils/TsFileResourceUtils.java | 3 +-
8 files changed, 119 insertions(+), 246 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 1e1afdbad96..7a9531350bc 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
@@ -93,8 +93,6 @@ public class CompactionMetrics implements IMetricSet {
}
}
- private Counter totalCompactionWriteInfoCounter =
DoNothingMetricManager.DO_NOTHING_COUNTER;
-
private void bindWriteInfo(AbstractMetricService metricService) {
for (CompactionType compactionType : CompactionType.values()) {
writeCounters.put(
@@ -123,14 +121,6 @@ public class CompactionMetrics implements IMetricSet {
METADATA)
});
}
- totalCompactionWriteInfoCounter =
- metricService.getOrCreateCounter(
- Metric.DATA_WRITTEN.toString(),
- MetricLevel.IMPORTANT,
- Tag.NAME.toString(),
- "compaction",
- Tag.TYPE.toString(),
- "total");
}
private void unbindWriteInfo(AbstractMetricService metricService) {
@@ -157,13 +147,6 @@ public class CompactionMetrics implements IMetricSet {
Tag.NAME.toString(),
METADATA);
}
- metricService.remove(
- MetricType.COUNTER,
- Metric.DATA_WRITTEN.toString(),
- Tag.NAME.toString(),
- "compaction",
- Tag.TYPE.toString(),
- "total");
}
public void recordWriteInfo(
@@ -172,13 +155,12 @@ public class CompactionMetrics implements IMetricSet {
if (counters != null) {
counters[dataType.getValue()].inc(byteNum);
}
- totalCompactionWriteInfoCounter.inc(byteNum);
}
// endregion
// region compaction read info
- private Counter totalCompactionReadInfoCounter =
DoNothingMetricManager.DO_NOTHING_COUNTER;
+ private Counter deserializeResourceCounter =
DoNothingMetricManager.DO_NOTHING_COUNTER;
private void bindReadInfo(AbstractMetricService metricService) {
for (CompactionType compactionType : CompactionType.values()) {
@@ -208,9 +190,14 @@ public class CompactionMetrics implements IMetricSet {
METADATA)
});
}
- totalCompactionReadInfoCounter =
+ deserializeResourceCounter =
metricService.getOrCreateCounter(
- Metric.DATA_READ.toString(), MetricLevel.IMPORTANT,
Tag.NAME.toString(), "compaction");
+ Metric.DATA_READ.toString(),
+ MetricLevel.IMPORTANT,
+ Tag.TYPE.toString(),
+ "total",
+ Tag.NAME.toString(),
+ "deserialize_resource");
}
private void unbindReadInfo(AbstractMetricService metricService) {
@@ -238,7 +225,12 @@ public class CompactionMetrics implements IMetricSet {
METADATA);
}
metricService.remove(
- MetricType.COUNTER, Metric.DATA_READ.toString(), Tag.NAME.toString(),
"compaction");
+ MetricType.COUNTER,
+ Metric.DATA_READ.toString(),
+ Tag.TYPE.toString(),
+ "total",
+ Tag.NAME.toString(),
+ "deserialize_resource");
}
public void recordReadInfo(
@@ -247,7 +239,10 @@ public class CompactionMetrics implements IMetricSet {
if (counters != null) {
counters[dataType.getValue()].inc(byteNum);
}
- totalCompactionReadInfoCounter.inc(byteNum);
+ }
+
+ public void recordDeserializeResourceInfo(long byteNum) {
+ deserializeResourceCounter.inc(byteNum);
}
// endregion
@@ -536,114 +531,46 @@ public class CompactionMetrics implements IMetricSet {
unSeqCompactionCostTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
crossCompactionCostTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
settleCompactionCostTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
- metricService.remove(
- MetricType.TIMER, Metric.COST_TASK.toString(), Tag.NAME.toString(),
"inner_seq_compaction");
- metricService.remove(
- MetricType.TIMER,
- Metric.COST_TASK.toString(),
- Tag.NAME.toString(),
- "inner_unseq_compaction");
- metricService.remove(
- MetricType.TIMER, Metric.COST_TASK.toString(), Tag.NAME.toString(),
"cross_compaction");
- metricService.remove(
- MetricType.TIMER, Metric.COST_TASK.toString(), Tag.NAME.toString(),
"insertion_compaction");
- metricService.remove(
- MetricType.TIMER, Metric.COST_TASK.toString(), Tag.NAME.toString(),
"settle_compaction");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_cross",
- Tag.STATUS.toString(),
- "waiting");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_insertion",
- Tag.STATUS.toString(),
- "waiting");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_inner_seq",
- Tag.STATUS.toString(),
- "waiting");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_inner_unseq",
- Tag.STATUS.toString(),
- "waiting");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_settle",
- Tag.STATUS.toString(),
- "waiting");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_cross",
- Tag.STATUS.toString(),
- "running");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_insertion",
- Tag.STATUS.toString(),
- "running");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_inner_seq",
- Tag.STATUS.toString(),
- "running");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_inner_unseq",
- Tag.STATUS.toString(),
- "running");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.QUEUE.toString(),
- Tag.NAME.toString(),
- "compaction_settle",
- Tag.STATUS.toString(),
- "running");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_COUNT.toString(),
- Tag.NAME.toString(),
- "inner_seq");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_COUNT.toString(),
- Tag.NAME.toString(),
- "inner_unseq");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_COUNT.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_COUNT.toString(),
- Tag.NAME.toString(),
- "insertion");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_COUNT.toString(),
- Tag.NAME.toString(),
- "settle");
+ for (String taskType :
+ Arrays.asList(
+ "inner_seq_compaction",
+ "inner_unseq_compaction",
+ "cross_compaction",
+ "insertion_compaction",
+ "settle_compaction")) {
+ metricService.remove(
+ MetricType.TIMER, Metric.COST_TASK.toString(), Tag.NAME.toString(),
taskType);
+ }
+ for (String taskType :
+ Arrays.asList(
+ "compaction_cross",
+ "compaction_insertion",
+ "compaction_inner_seq",
+ "compaction_inner_unseq",
+ "compaction_settle")) {
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.QUEUE.toString(),
+ Tag.NAME.toString(),
+ taskType,
+ Tag.STATUS.toString(),
+ "waiting");
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.QUEUE.toString(),
+ Tag.NAME.toString(),
+ taskType,
+ Tag.STATUS.toString(),
+ "running");
+ }
+ for (String taskType :
+ Arrays.asList("inner_seq", "inner_unseq", "cross", "insertion",
"settle")) {
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.COMPACTION_TASK_COUNT.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ }
}
// endregion
@@ -738,48 +665,20 @@ public class CompactionMetrics implements IMetricSet {
}
private void unbindCompactionTaskMemory(AbstractMetricService metricService)
{
- metricService.remove(
- MetricType.HISTOGRAM, Metric.COMPACTION_TASK_MEMORY.toString(),
Tag.NAME.toString(), "seq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_MEMORY.toString(),
- Tag.NAME.toString(),
- "unseq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_MEMORY.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_MEMORY.toString(),
- Tag.NAME.toString(),
- "settle");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
- Tag.NAME.toString(),
- "total");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
- Tag.NAME.toString(),
- "seq");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
- Tag.NAME.toString(),
- "unseq");
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
- Tag.NAME.toString(),
- "settle");
+ for (String taskType : Arrays.asList("seq", "unseq", "cross", "settle")) {
+ metricService.remove(
+ MetricType.HISTOGRAM,
+ Metric.COMPACTION_TASK_MEMORY.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ }
+ for (String taskType : Arrays.asList("seq", "unseq", "cross", "settle",
"total")) {
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.COMPACTION_TASK_MEMORY_DISTRIBUTION.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ }
}
// endregion
@@ -954,73 +853,25 @@ public class CompactionMetrics implements IMetricSet {
}
private void unbindCompactionTaskSelection(AbstractMetricService
metricService) {
- metricService.remove(
- MetricType.GAUGE, Metric.COMPACTION_TASK_SELECTION.toString(),
Tag.NAME.toString(), "seq");
- metricService.remove(
- MetricType.GAUGE,
- Metric.COMPACTION_TASK_SELECTION.toString(),
- Tag.NAME.toString(),
- "unseq");
- metricService.remove(
- MetricType.GAUGE,
- Metric.COMPACTION_TASK_SELECTION.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.GAUGE,
- Metric.COMPACTION_TASK_SELECTION.toString(),
- Tag.NAME.toString(),
- "insertion");
- metricService.remove(
- MetricType.GAUGE,
- Metric.COMPACTION_TASK_SELECTION.toString(),
- Tag.NAME.toString(),
- "settle");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTION_COST.toString(),
- Tag.NAME.toString(),
- "seq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTION_COST.toString(),
- Tag.NAME.toString(),
- "unseq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTION_COST.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTION_COST.toString(),
- Tag.NAME.toString(),
- "insertion");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTION_COST.toString(),
- Tag.NAME.toString(),
- "settle");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTED_FILE.toString(),
- Tag.NAME.toString(),
- "seq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTED_FILE.toString(),
- Tag.NAME.toString(),
- "unseq");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTED_FILE.toString(),
- Tag.NAME.toString(),
- "cross");
- metricService.remove(
- MetricType.HISTOGRAM,
- Metric.COMPACTION_TASK_SELECTED_FILE.toString(),
- Tag.NAME.toString(),
- "settle");
+ for (String taskType : Arrays.asList("seq", "unseq", "cross", "insertion",
"settle")) {
+ metricService.remove(
+ MetricType.GAUGE,
+ Metric.COMPACTION_TASK_SELECTION.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ metricService.remove(
+ MetricType.HISTOGRAM,
+ Metric.COMPACTION_TASK_SELECTION_COST.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ }
+ for (String taskType : Arrays.asList("seq", "unseq", "cross", "settle")) {
+ metricService.remove(
+ MetricType.HISTOGRAM,
+ Metric.COMPACTION_TASK_SELECTED_FILE.toString(),
+ Tag.NAME.toString(),
+ taskType);
+ }
}
// endregion
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/RepairUnsortedFileCompactionPerformer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/RepairUnsortedFileCompactionPerformer.java
index c9f61a02cbd..4269169a3c3 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/RepairUnsortedFileCompactionPerformer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/RepairUnsortedFileCompactionPerformer.java
@@ -19,6 +19,7 @@
package
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer.AbstractCompactionWriter;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer.RepairUnsortedFileCompactionWriter;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
@@ -66,7 +67,7 @@ public class RepairUnsortedFileCompactionPerformer extends
ReadPointCompactionPe
if (timeIndex instanceof ArrayDeviceTimeIndex) {
targetFile.setTimeIndex(timeIndex);
} else {
- targetFile.setTimeIndex(seqSourceFile.buildDeviceTimeIndex());
+
targetFile.setTimeIndex(CompactionUtils.buildDeviceTimeIndex(seqSourceFile));
}
if (seqSourceFile.modFileExists()) {
Files.createLink(
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
index 3de7756142f..8bed69c0d87 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
@@ -23,11 +23,14 @@ import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.commons.service.metric.MetricService;
import org.apache.iotdb.commons.service.metric.enums.Tag;
+import org.apache.iotdb.db.service.metrics.CompactionMetrics;
import org.apache.iotdb.db.service.metrics.FileMetrics;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
import
org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
+import
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ArrayDeviceTimeIndex;
import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.iotdb.metrics.utils.SystemMetric;
@@ -363,4 +366,18 @@ public class CompactionUtils {
}
return true;
}
+
+ public static ArrayDeviceTimeIndex buildDeviceTimeIndex(TsFileResource
resource)
+ throws IOException {
+ long resourceFileSize =
+ new File(resource.getTsFilePath() +
TsFileResource.RESOURCE_SUFFIX).length();
+
CompactionTaskManager.getInstance().getCompactionReadOperationRateLimiter().acquire(1);
+ while (resourceFileSize > 0) {
+ int readSize = (int) Math.min(resourceFileSize, Integer.MAX_VALUE);
+
CompactionTaskManager.getInstance().getCompactionReadRateLimiter().acquire(readSize);
+ resourceFileSize -= readSize;
+ }
+
CompactionMetrics.getInstance().recordDeserializeResourceInfo(resourceFileSize);
+ return resource.buildDeviceTimeIndex();
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
index e94bd9c7835..9bbd219b6c9 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.db.storageengine.dataregion.compaction.repair;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.exception.CompactionLastTimeCheckFailedException;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader.CompactionChunkReader;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileReader;
import
org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
@@ -290,6 +291,6 @@ public class RepairDataFileScanUtil {
if (timeIndex instanceof ArrayDeviceTimeIndex) {
return (ArrayDeviceTimeIndex) timeIndex;
}
- return resource.buildDeviceTimeIndex();
+ return CompactionUtils.buildDeviceTimeIndex(resource);
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
index 5b9269558d8..37955f7cacb 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.storageengine.dataregion.compaction.selector.estimat
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ArrayDeviceTimeIndex;
@@ -161,7 +162,7 @@ public abstract class AbstractCompactionEstimator {
}
ITimeIndex timeIndex = resource.getTimeIndex();
if (timeIndex instanceof FileTimeIndex) {
- timeIndex = resource.buildDeviceTimeIndex();
+ timeIndex = CompactionUtils.buildDeviceTimeIndex(resource);
}
deviceTimeIndexCache.put(resource, (ArrayDeviceTimeIndex) timeIndex);
return (ArrayDeviceTimeIndex) timeIndex;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java
index 7b0ab7a38a7..5b72740933b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java
@@ -202,7 +202,7 @@ public class SettleSelectorImpl implements ISettleSelector {
ModificationFile modFile = resource.getModFile();
ITimeIndex timeIndex = resource.getTimeIndex();
if (timeIndex instanceof FileTimeIndex) {
- timeIndex = resource.buildDeviceTimeIndex();
+ timeIndex = CompactionUtils.buildDeviceTimeIndex(resource);
}
Set<IDeviceID> deletedDevices = new HashSet<>();
boolean hasExpiredTooLong = false;
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 89874dbb4ab..f01ed280ad5 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.execute.utils.CompactionUtils;
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;
@@ -87,7 +88,7 @@ public class TsFileResourceCandidate {
hasDetailedDeviceInfo = false;
return;
}
- ArrayDeviceTimeIndex timeIndex = resource.buildDeviceTimeIndex();
+ ArrayDeviceTimeIndex timeIndex =
CompactionUtils.buildDeviceTimeIndex(resource);
for (IDeviceID deviceId : timeIndex.getDevices()) {
deviceInfoMap.put(
deviceId,
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
index 36eff12124a..0b0bc60be47 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.storageengine.dataregion.utils;
+import
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
import
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ArrayDeviceTimeIndex;
@@ -379,7 +380,7 @@ public class TsFileResourceUtils {
if (resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE) {
// if time index is not device time index, then deserialize it from
resource file
try {
- timeIndex = resource.buildDeviceTimeIndex();
+ timeIndex = CompactionUtils.buildDeviceTimeIndex(resource);
} catch (IOException e) {
// skip such files
continue;