This is an automated email from the ASF dual-hosted git repository. xingtanzjr pushed a commit to branch xingtanzjr/refine_cross_selection in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 48f514cb4efd874dd697d49ec2476f571a09c72f Author: Jinrui.Zhang <[email protected]> AuthorDate: Thu Dec 22 14:50:42 2022 +0800 fix bug --- .../cross/rewrite/CrossCompactionTaskResource.java | 18 ++++++++++++++++++ .../cross/rewrite/CrossSpaceCompactionCandidate.java | 1 + .../rewrite/RewriteCrossSpaceCompactionSelector.java | 1 + 3 files changed, 20 insertions(+) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossCompactionTaskResource.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossCompactionTaskResource.java index 8be9220209..81e02b1ba7 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossCompactionTaskResource.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossCompactionTaskResource.java @@ -22,7 +22,9 @@ package org.apache.iotdb.db.engine.compaction.cross.rewrite; import org.apache.iotdb.db.engine.storagegroup.TsFileResource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class CrossCompactionTaskResource { private List<TsFileResource> seqFiles; @@ -44,6 +46,22 @@ public class CrossCompactionTaskResource { return seqFiles; } + // we need to unsure the files in seqFiles is ordered by the time range, that is, it should keep the + // order from candidates' seq file list. + public void sortSeqFiles(List<TsFileResource> seqFilesCandidates) { + Map<TsFileResource, Boolean> selectedFileMap = new HashMap<>(); + for (TsFileResource selectedFile : this.seqFiles) { + selectedFileMap.put(selectedFile, true); + } + List<TsFileResource> sortedSeqFiles = new ArrayList<>(); + for (TsFileResource file : seqFilesCandidates) { + if (selectedFileMap.containsKey(file)) { + sortedSeqFiles.add(file); + } + } + this.seqFiles = sortedSeqFiles; + } + public void putResources( TsFileResource unseqFile, List<TsFileResource> seqFiles, long memoryCost) { addUnseqFile(unseqFile); diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java index 0965ead3f9..d578a7934c 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java @@ -115,6 +115,7 @@ public class CrossSpaceCompactionCandidate { // TaskResource unseqFile.markAsSelected(); nextSplit = new CrossCompactionTaskResourceSplit(unseqFile, ret); + nextUnseqFileIndex ++; return true; } diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java index ca21afe699..9900d5cab6 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/RewriteCrossSpaceCompactionSelector.java @@ -174,6 +174,7 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector memoryCost, totalCost); } + taskResource.sortSeqFiles(candidate.getSeqFiles()); return taskResource; }
