This is an automated email from the ASF dual-hosted git repository.

tanxinyu 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 88cadb2d800 more compaction config items allow hot load (#12596)
88cadb2d800 is described below

commit 88cadb2d800a7c125ed883e902814b5b3a5e4f29
Author: shuwenwei <[email protected]>
AuthorDate: Mon May 27 18:20:47 2024 +0800

    more compaction config items allow hot load (#12596)
---
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  | 34 ++++++++++++++++++++++
 .../impl/RewriteCrossSpaceCompactionSelector.java  |  5 ++--
 .../impl/SizeTieredCompactionSelector.java         |  5 ++--
 3 files changed, 40 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 6ac64b6c482..f38bd65f3cc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1188,6 +1188,40 @@ public class IoTDBDescriptor {
                 "compaction_read_throughput_mb_per_sec",
                 
Integer.toString(conf.getCompactionReadThroughputMbPerSec()))));
 
+    // update max_inner_compaction_candidate_file_num
+    conf.setFileLimitPerInnerTask(
+        Integer.parseInt(
+            properties.getProperty(
+                "max_inner_compaction_candidate_file_num",
+                Integer.toString(conf.getFileLimitPerInnerTask()))));
+
+    // update target_compaction_file_size
+    conf.setTargetCompactionFileSize(
+        Long.parseLong(
+            properties.getProperty(
+                "target_compaction_file_size", 
Long.toString(conf.getTargetCompactionFileSize()))));
+
+    // update max_cross_compaction_candidate_file_num
+    conf.setFileLimitPerCrossTask(
+        Integer.parseInt(
+            properties.getProperty(
+                "max_cross_compaction_candidate_file_num",
+                Integer.toString(conf.getFileLimitPerCrossTask()))));
+
+    // update max_cross_compaction_candidate_file_size
+    conf.setMaxCrossCompactionCandidateFileSize(
+        Long.parseLong(
+            properties.getProperty(
+                "max_cross_compaction_candidate_file_size",
+                
Long.toString(conf.getMaxCrossCompactionCandidateFileSize()))));
+
+    // update min_cross_compaction_unseq_file_level
+    conf.setMinCrossCompactionUnseqFileLevel(
+        Integer.parseInt(
+            properties.getProperty(
+                "min_cross_compaction_unseq_file_level",
+                
Integer.toString(conf.getMinCrossCompactionUnseqFileLevel()))));
+
     CompactionTaskManager.getInstance()
         
.setCompactionReadOperationRate(conf.getCompactionReadOperationPerSec());
     CompactionTaskManager.getInstance()
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
index cc858f2d04b..1904723ce73 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
@@ -265,18 +265,19 @@ public class RewriteCrossSpaceCompactionSelector 
implements ICrossSpaceSelector
     }
     TsFileNameGenerator.TsFileName unseqFileName =
         TsFileNameGenerator.getTsFileName(unseqFile.getTsFile().getName());
+    long targetCompactionFileSize = config.getTargetCompactionFileSize();
     // 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 (unseqFile.getTsFileSize() < config.getTargetCompactionFileSize()
+    if (unseqFile.getTsFileSize() < targetCompactionFileSize
         && unseqFileName.getInnerCompactionCnt() < 
config.getMinCrossCompactionUnseqFileLevel()) {
       return false;
     }
 
     long totalFileSize = unseqFile.getTsFileSize();
     for (TsFileResource f : seqFiles) {
-      if (f.getTsFileSize() >= config.getTargetCompactionFileSize() * 1.5) {
+      if (f.getTsFileSize() >= targetCompactionFileSize * 1.5) {
         // to avoid serious write amplification caused by cross space 
compaction, we restrict that
         // seq files are no longer be compacted when the size reaches the 
threshold.
         return false;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
index 2dee4544b01..e7eed32dde8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
@@ -101,6 +101,7 @@ public class SizeTieredCompactionSelector
     List<TsFileResource> selectedFileList = new ArrayList<>();
     long selectedFileSize = 0L;
     long targetCompactionFileSize = config.getTargetCompactionFileSize();
+    int fileLimit = config.getFileLimitPerInnerTask();
 
     List<List<TsFileResource>> taskList = new ArrayList<>();
     for (TsFileResource currentFile : tsFileResources) {
@@ -124,7 +125,7 @@ public class SizeTieredCompactionSelector
       long totalSizeIfSelectCurrentFile = selectedFileSize + 
currentFile.getTsFileSize();
       boolean canNotAddCurrentFileIntoCurrentTask =
           totalSizeIfSelectCurrentFile > targetCompactionFileSize
-              || selectedFileList.size() >= config.getFileLimitPerInnerTask();
+              || selectedFileList.size() >= fileLimit;
       if (canNotAddCurrentFileIntoCurrentTask) {
         // total file size or num will beyond the threshold if select current 
file, stop the
         // selection of current task
@@ -149,7 +150,7 @@ public class SizeTieredCompactionSelector
     }
 
     // if the selected file size reach the condition to submit
-    if (selectedFileList.size() == config.getFileLimitPerInnerTask()) {
+    if (selectedFileList.size() == fileLimit) {
       taskList.add(new ArrayList<>(selectedFileList));
       selectedFileList.clear();
       selectedFileSize = 0;

Reply via email to