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

marklau99 pushed a commit to branch IOTDB-4584
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 9149f8545e7a238e52d39dd28cc0d85b3278fdbb
Author: LiuXuxin <[email protected]>
AuthorDate: Mon Oct 10 15:44:25 2022 +0800

    control the size of metadata when start flushing memtable
---
 .../java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java    | 6 ++++++
 .../java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java   | 4 ++++
 2 files changed, 10 insertions(+)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java 
b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
index 6c6ab965b6..2a21c7c1ef 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
@@ -111,6 +111,12 @@ public class MemTableFlushTask {
               : memTable.memSize()
                   / memTable.getSeriesNumber()
                   * config.getIoTaskQueueSizeForFlushing();
+      long memorySizeForMetadata =
+          (long)
+              
(IoTDBDescriptor.getInstance().getConfig().getChunkMetadataSizeProportionInWrite()
+                  * estimatedTemporaryMemSize);
+      writer.setMemorySizeForMetadata(memorySizeForMetadata);
+      estimatedTemporaryMemSize += memorySizeForMetadata;
       
SystemInfo.getInstance().applyTemporaryMemoryForFlushing(estimatedTemporaryMemSize);
     }
     long start = System.currentTimeMillis();
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
index f2e73d56ae..ab7cfa02c2 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
@@ -691,4 +691,8 @@ public class TsFileIOWriter implements AutoCloseable {
   public String getCurrentChunkGroupDeviceId() {
     return currentChunkGroupDeviceId;
   }
+
+  public void setMemorySizeForMetadata(long size) {
+    maxMetadataSize = size;
+  }
 }

Reply via email to