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;
   }