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 2023/02/13 03:51:54 UTC
[iotdb] 01/02: change logic of cross selector
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch changcheng_0213
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 043dcc8fc3109822f6600857ea46321a2cb6748a
Author: Jinrui.Zhang <xi...@gmail.com>
AuthorDate: Wed Jan 18 14:55:20 2023 +0800
change logic of cross selector
---
.../impl/RewriteCrossSpaceCompactionSelector.java | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
index 1a3bb4480d..8ce59d35c1 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.db.engine.compaction.selector.utils.CrossSpaceCompaction
import org.apache.iotdb.db.engine.compaction.selector.utils.CrossSpaceCompactionCandidate.CrossCompactionTaskResourceSplit;
import org.apache.iotdb.db.engine.compaction.selector.utils.CrossSpaceCompactionCandidate.TsFileResourceCandidate;
import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
+import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.exception.MergeException;
import org.apache.iotdb.db.rescon.SystemInfo;
@@ -186,10 +187,20 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
CrossCompactionTaskResource taskResource,
TsFileResource unseqFile,
List<TsFileResource> seqFiles,
- long memoryCost) {
+ long memoryCost)
+ throws IOException {
+ // we add a hard limit for cross compaction that selected unseqFile should be compacted in inner
+ // space at least once. This is used to make to improve the priority of inner compaction and
+ // avoid too much cross compaction with small files.
+ TsFileNameGenerator.TsFileName unseqFileName =
+ TsFileNameGenerator.getTsFileName(unseqFile.getTsFile().getName());
+ if (unseqFileName.getInnerCompactionCnt() < 1) {
+ return false;
+ }
// currently, we must allow at least one unseqFile be selected to handle the situation that
// an unseqFile has huge time range but few data points.
- if (taskResource.getUnseqFiles().isEmpty()) {
+ // IMPORTANT: this logic is opposite to previous one
+ if (taskResource.getUnseqFiles().size() == 0) {
return true;
}
long totalFileSize = unseqFile.getTsFileSize();