Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
7efbdb2
reconstruct compaction package
THUMarkLau Mar 31, 2022
7424fd6
remove CompactionTaskFactory
THUMarkLau Mar 31, 2022
d8951e8
replace compact in InnerSpaceCompactionUtils with RCCP
THUMarkLau Apr 1, 2022
b228a02
rename test
THUMarkLau Apr 1, 2022
9e4f46a
replace CompactionUtils with ReadPointCompactionPerformer
THUMarkLau Apr 1, 2022
8a8c129
combine CompactionUtils and InnerSpaceCompactionUtils together
THUMarkLau Apr 1, 2022
e17d66e
reconstruct compaction task structure
THUMarkLau Apr 6, 2022
69f4789
remove useless variable
THUMarkLau Apr 6, 2022
66bbe6c
refactor package structure
THUMarkLau Apr 6, 2022
9b3388c
fix compilation problem
THUMarkLau Apr 7, 2022
7cbbc78
refactor CompactionTaskComparator
THUMarkLau Apr 7, 2022
9bc9087
merge with upstream master
THUMarkLau Apr 7, 2022
91fdbb9
format the code
THUMarkLau Apr 7, 2022
871f3d8
temp submit
THUMarkLau Apr 7, 2022
5408c55
refactor compaction task selector
THUMarkLau Apr 7, 2022
db80cc4
try to fix ci
THUMarkLau Apr 7, 2022
dd659eb
fix ci
THUMarkLau Apr 7, 2022
107eab5
Merge remote-tracking branch 'upstream/master' into IOTDB-2817
THUMarkLau Apr 7, 2022
1eeda27
refactor CompactionPerformer
THUMarkLau Apr 8, 2022
21ecc30
fix ci
THUMarkLau Apr 8, 2022
448cc92
merge with upstream/master
THUMarkLau Apr 10, 2022
d1644d6
merge with upstream/master
THUMarkLau Apr 11, 2022
23f3b79
refactor ICompactionSelector interface
THUMarkLau Apr 11, 2022
1127c1b
Separate compaction selector and performer in the configuration
THUMarkLau Apr 11, 2022
d9b9ef9
add some comment
THUMarkLau Apr 11, 2022
ee091a5
fix ci
THUMarkLau Apr 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 22 additions & 6 deletions server/src/assembly/resources/conf/iotdb-engine.properties
Original file line number Diff line number Diff line change
Expand Up @@ -453,13 +453,29 @@ timestamp_precision=ms
# Datatype: boolean
# enable_cross_space_compaction=true

# the strategy of cross space compaction task
# Options: rewrite_compaction
# cross_compaction_strategy=rewrite_compaction
# the selector of cross space compaction task
# Options: rewrite
# cross_selector=rewrite

# the strategy of inner space compaction task
# Options: size_tiered_compaction
# inner_compaction_strategy=size_tiered_compaction
# the compaction performer of cross space compaction task
# Options: read_point
# cross_performer=read_point

# the selector of inner sequence space compaction task
# Options: size_tiered
# inner_seq_selector=size_tiered

# the performer of inner sequence space compaction task
# Options: read_chunk
# inner_seq_performer=read_chunk

# the selector of inner unsequence space compaction task
# Options: size_tiered
# inner_unseq_selector=size_tiered

# the performer of inner unsequence space compaction task
# Options: read_point
# inner_seq_performer=read_point

# The priority of compaction execution
# INNER_CROSS: prioritize inner space compaction, reduce the number of files first
Expand Down
82 changes: 66 additions & 16 deletions server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@
import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.engine.compaction.constant.CompactionPriority;
import org.apache.iotdb.db.engine.compaction.cross.CrossCompactionStrategy;
import org.apache.iotdb.db.engine.compaction.inner.InnerCompactionStrategy;
import org.apache.iotdb.db.engine.compaction.constant.CrossCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.CrossCompactionSelector;
import org.apache.iotdb.db.engine.compaction.constant.InnerSeqCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.InnerSequenceCompactionSelector;
import org.apache.iotdb.db.engine.compaction.constant.InnerUnseqCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.InnerUnsequenceCompactionSelector;
import org.apache.iotdb.db.engine.storagegroup.timeindex.TimeIndexLevel;
import org.apache.iotdb.db.exception.LoadConfigurationException;
import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
Expand Down Expand Up @@ -362,10 +366,10 @@ public class IoTDBConfig {
/** When average series point number reaches this, flush the memtable to disk */
private int avgSeriesPointNumberThreshold = 10000;

/** Enable inner space copaction for sequence files */
/** Enable inner space compaction for sequence files */
private boolean enableSeqSpaceCompaction = true;

/** Enable inner space copaction for unsequence files */
/** Enable inner space compaction for unsequence files */
private boolean enableUnseqSpaceCompaction = true;

/** Compact the unsequence files into the overlapped sequence files */
Expand All @@ -375,15 +379,25 @@ public class IoTDBConfig {
* The strategy of inner space compaction task. There are just one inner space compaction strategy
* SIZE_TIRED_COMPACTION:
*/
private InnerCompactionStrategy innerCompactionStrategy =
InnerCompactionStrategy.SIZE_TIERED_COMPACTION;
private InnerSequenceCompactionSelector innerSequenceCompactionSelector =
InnerSequenceCompactionSelector.SIZE_TIERED;

private InnerSeqCompactionPerformer innerSeqCompactionPerformer =
InnerSeqCompactionPerformer.READ_CHUNK;

private InnerUnsequenceCompactionSelector innerUnsequenceCompactionSelector =
InnerUnsequenceCompactionSelector.SIZE_TIERED;

private InnerUnseqCompactionPerformer innerUnseqCompactionPerformer =
InnerUnseqCompactionPerformer.READ_POINT;

/**
* The strategy of cross space compaction task. There are just one cross space compaction strategy
* SIZE_TIRED_COMPACTION:
*/
private CrossCompactionStrategy crossCompactionStrategy =
CrossCompactionStrategy.REWRITE_COMPACTION;
private CrossCompactionSelector crossCompactionSelector = CrossCompactionSelector.REWRITE;

private CrossCompactionPerformer crossCompactionPerformer = CrossCompactionPerformer.READ_POINT;

/**
* The priority of compaction task execution. There are three priority strategy INNER_CROSS:
Expand Down Expand Up @@ -2455,20 +2469,56 @@ public void setEnableCrossSpaceCompaction(boolean enableCrossSpaceCompaction) {
this.enableCrossSpaceCompaction = enableCrossSpaceCompaction;
}

public InnerCompactionStrategy getInnerCompactionStrategy() {
return innerCompactionStrategy;
public InnerSequenceCompactionSelector getInnerSequenceCompactionSelector() {
return innerSequenceCompactionSelector;
}

public void setInnerSequenceCompactionSelector(
InnerSequenceCompactionSelector innerSequenceCompactionSelector) {
this.innerSequenceCompactionSelector = innerSequenceCompactionSelector;
}

public InnerUnsequenceCompactionSelector getInnerUnsequenceCompactionSelector() {
return innerUnsequenceCompactionSelector;
}

public void setInnerUnsequenceCompactionSelector(
InnerUnsequenceCompactionSelector innerUnsequenceCompactionSelector) {
this.innerUnsequenceCompactionSelector = innerUnsequenceCompactionSelector;
}

public InnerSeqCompactionPerformer getInnerSeqCompactionPerformer() {
return innerSeqCompactionPerformer;
}

public void setInnerSeqCompactionPerformer(
InnerSeqCompactionPerformer innerSeqCompactionPerformer) {
this.innerSeqCompactionPerformer = innerSeqCompactionPerformer;
}

public InnerUnseqCompactionPerformer getInnerUnseqCompactionPerformer() {
return innerUnseqCompactionPerformer;
}

public void setInnerUnseqCompactionPerformer(
InnerUnseqCompactionPerformer innerUnseqCompactionPerformer) {
this.innerUnseqCompactionPerformer = innerUnseqCompactionPerformer;
}

public CrossCompactionSelector getCrossCompactionSelector() {
return crossCompactionSelector;
}

public void setInnerCompactionStrategy(InnerCompactionStrategy innerCompactionStrategy) {
this.innerCompactionStrategy = innerCompactionStrategy;
public void setCrossCompactionSelector(CrossCompactionSelector crossCompactionSelector) {
this.crossCompactionSelector = crossCompactionSelector;
}

public CrossCompactionStrategy getCrossCompactionStrategy() {
return crossCompactionStrategy;
public CrossCompactionPerformer getCrossCompactionPerformer() {
return crossCompactionPerformer;
}

public void setCrossCompactionStrategy(CrossCompactionStrategy crossCompactionStrategy) {
this.crossCompactionStrategy = crossCompactionStrategy;
public void setCrossCompactionPerformer(CrossCompactionPerformer crossCompactionPerformer) {
this.crossCompactionPerformer = crossCompactionPerformer;
}

public CompactionPriority getCompactionPriority() {
Expand Down
40 changes: 32 additions & 8 deletions server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,12 @@
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.compaction.constant.CompactionPriority;
import org.apache.iotdb.db.engine.compaction.cross.CrossCompactionStrategy;
import org.apache.iotdb.db.engine.compaction.inner.InnerCompactionStrategy;
import org.apache.iotdb.db.engine.compaction.constant.CrossCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.CrossCompactionSelector;
import org.apache.iotdb.db.engine.compaction.constant.InnerSeqCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.InnerSequenceCompactionSelector;
import org.apache.iotdb.db.engine.compaction.constant.InnerUnseqCompactionPerformer;
import org.apache.iotdb.db.engine.compaction.constant.InnerUnsequenceCompactionSelector;
import org.apache.iotdb.db.exception.BadNodeUrlFormatException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.qp.utils.DatetimeUtils;
Expand Down Expand Up @@ -359,15 +363,35 @@ private void loadProps() {
"enable_unseq_space_compaction",
Boolean.toString(conf.isEnableUnseqSpaceCompaction()))));

conf.setCrossCompactionStrategy(
CrossCompactionStrategy.getCrossCompactionStrategy(
conf.setCrossCompactionSelector(
CrossCompactionSelector.getCrossCompactionStrategy(
properties.getProperty(
"cross_compaction_strategy", conf.getCrossCompactionStrategy().toString())));
"cross_selector", conf.getCrossCompactionSelector().toString())));

conf.setInnerCompactionStrategy(
InnerCompactionStrategy.getInnerCompactionStrategy(
conf.setInnerSequenceCompactionSelector(
InnerSequenceCompactionSelector.getInnerSequenceCompactionStrategy(
properties.getProperty(
"inner_compaction_strategy", conf.getInnerCompactionStrategy().toString())));
"inner_seq_selector", conf.getInnerSequenceCompactionSelector().toString())));

conf.setInnerUnsequenceCompactionSelector(
InnerUnsequenceCompactionSelector.getInnerUnsequenceCompactionStrategy(
properties.getProperty(
"inner_unseq_selector", conf.getInnerUnsequenceCompactionSelector().toString())));

conf.setInnerSeqCompactionPerformer(
InnerSeqCompactionPerformer.getInnerSeqCompactionPerformer(
properties.getProperty(
"inner_seq_performer", conf.getInnerUnseqCompactionPerformer().toString())));

conf.setInnerUnseqCompactionPerformer(
InnerUnseqCompactionPerformer.getInnerUnseqCompactionPerformer(
properties.getProperty(
"inner_unseq_performer", conf.getInnerUnseqCompactionPerformer().toString())));

conf.setCrossCompactionPerformer(
CrossCompactionPerformer.getCrossCompactionPerformer(
properties.getProperty(
"cross_performer", conf.getCrossCompactionPerformer().toString())));

conf.setCompactionPriority(
CompactionPriority.valueOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@
* under the License.
*/

package org.apache.iotdb.db.engine.compaction.task;
package org.apache.iotdb.db.engine.compaction;

import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.compaction.CompactionUtils;
import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.engine.storagegroup.TsFileResourceList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import org.apache.iotdb.db.engine.compaction.constant.CompactionTaskStatus;
import org.apache.iotdb.db.engine.compaction.constant.CompactionType;
import org.apache.iotdb.db.engine.compaction.constant.ProcessChunkType;
import org.apache.iotdb.db.engine.compaction.cross.AbstractCrossSpaceCompactionTask;
import org.apache.iotdb.db.engine.compaction.inner.AbstractInnerSpaceCompactionTask;
import org.apache.iotdb.db.engine.compaction.cross.CrossSpaceCompactionTask;
import org.apache.iotdb.db.engine.compaction.inner.InnerSpaceCompactionTask;
import org.apache.iotdb.db.engine.compaction.task.AbstractCompactionTask;
import org.apache.iotdb.db.service.metrics.Metric;
import org.apache.iotdb.db.service.metrics.MetricsService;
Expand Down Expand Up @@ -89,10 +89,10 @@ public static void recordTaskInfo(
}
String taskType = "unknown";
boolean isInnerTask = false;
if (task instanceof AbstractInnerSpaceCompactionTask) {
if (task instanceof InnerSpaceCompactionTask) {
isInnerTask = true;
taskType = "inner";
} else if (task instanceof AbstractCrossSpaceCompactionTask) {
} else if (task instanceof CrossSpaceCompactionTask) {
taskType = "cross";
}

Expand Down Expand Up @@ -154,9 +154,7 @@ public static void recordTaskInfo(
Tag.NAME.toString(),
"inner_compaction_count",
Tag.TYPE.toString(),
((AbstractInnerSpaceCompactionTask) task).isSequence()
? "sequence"
: "unsequence");
((InnerSpaceCompactionTask) task).isSequence() ? "sequence" : "unsequence");
} else {
MetricsService.getInstance()
.getMetricManager()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.iotdb.db.engine.compaction.task;
package org.apache.iotdb.db.engine.compaction;

import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.engine.compaction.utils.log.CompactionLogger;
import org.apache.iotdb.db.engine.compaction.log.CompactionLogger;
import org.apache.iotdb.db.engine.compaction.task.CompactionRecoverTask;
import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;

Expand All @@ -31,8 +32,8 @@
import java.util.List;
import java.util.regex.Pattern;

import static org.apache.iotdb.db.engine.compaction.utils.log.CompactionLogger.CROSS_COMPACTION_LOG_NAME_FROM_OLD;
import static org.apache.iotdb.db.engine.compaction.utils.log.CompactionLogger.INNER_COMPACTION_LOG_NAME_SUFFIX_FROM_OLD;
import static org.apache.iotdb.db.engine.compaction.log.CompactionLogger.CROSS_COMPACTION_LOG_NAME_FROM_OLD;
import static org.apache.iotdb.db.engine.compaction.log.CompactionLogger.INNER_COMPACTION_LOG_NAME_SUFFIX_FROM_OLD;

/**
* CompactionRecoverManager searches compaction log and call {@link CompactionRecoverTask} to
Expand Down
Loading