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 2022/12/22 08:08:33 UTC
[iotdb] 01/03: fix bug
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 <xi...@gmail.com>
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;
}