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/04/19 09:33:52 UTC
[iotdb] branch master updated: [IOTDB-5691] The first level-0 tsfile too large to trigger "Unsequence InnerSpaceComapction" and "CrossSpaceCompaction" (#9503)
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new c97c0dc2a7 [IOTDB-5691] The first level-0 tsfile too large to trigger "Unsequence InnerSpaceComapction" and "CrossSpaceCompaction" (#9503)
c97c0dc2a7 is described below
commit c97c0dc2a7373c77b33c98efc8839142b4b0e866
Author: 周沛辰 <45...@users.noreply.github.com>
AuthorDate: Wed Apr 19 17:33:46 2023 +0800
[IOTDB-5691] The first level-0 tsfile too large to trigger "Unsequence InnerSpaceComapction" and "CrossSpaceCompaction" (#9503)
---
.../selector/impl/RewriteCrossSpaceCompactionSelector.java | 6 ++++--
.../compaction/cross/RewriteCompactionFileSelectorTest.java | 11 +++++++++++
2 files changed, 15 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 9f63c7f108..029b56d3e5 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
@@ -212,10 +212,12 @@ public class RewriteCrossSpaceCompactionSelector implements ICrossSpaceSelector
throws IOException {
TsFileNameGenerator.TsFileName unseqFileName =
TsFileNameGenerator.getTsFileName(unseqFile.getTsFile().getName());
- // we add a hard limit for cross compaction that selected unseqFile should be compacted in inner
+ // we add a hard limit for cross compaction that selected unseqFile should reach a certain size
+ // or 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.
- if (unseqFileName.getInnerCompactionCnt() < config.getMinCrossCompactionUnseqFileLevel()) {
+ if (unseqFile.getTsFileSize() < config.getTargetCompactionFileSize()
+ && unseqFileName.getInnerCompactionCnt() < config.getMinCrossCompactionUnseqFileLevel()) {
return false;
}
// currently, we must allow at least one unseqFile be selected to handle the situation that
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCompactionFileSelectorTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCompactionFileSelectorTest.java
index 66c993e900..eb41d9a802 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCompactionFileSelectorTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/RewriteCompactionFileSelectorTest.java
@@ -1026,4 +1026,15 @@ public class RewriteCompactionFileSelectorTest extends MergeTest {
// fail();
}
}
+
+ @Test
+ public void testFirstUnseqFileIsLarge() {
+ IoTDBDescriptor.getInstance().getConfig().setMinCrossCompactionUnseqFileLevel(1);
+ IoTDBDescriptor.getInstance().getConfig().setTargetCompactionFileSize(1024);
+ RewriteCrossSpaceCompactionSelector selector =
+ new RewriteCrossSpaceCompactionSelector("", "", 0, null);
+ List<CrossCompactionTaskResource> selected =
+ selector.selectCrossSpaceTask(seqResources, unseqResources);
+ Assert.assertEquals(1, selected.size());
+ }
}