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

haonan pushed a commit to branch fix_negative_compression_ratio_after_restart
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit b5492ba229309cdc066ad126b03fc4576d27662b
Author: HTHou <[email protected]>
AuthorDate: Mon Jul 8 21:01:05 2024 +0800

    Fix negative compression ratios after restart
---
 .../recover/file/UnsealedTsFileRecoverPerformer.java  | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
index 6bb9ef59898..78ce9550144 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.pipe.agent.PipeDataNodeAgent;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.DeleteDataNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
+import org.apache.iotdb.db.storageengine.dataregion.flush.CompressionRatio;
 import org.apache.iotdb.db.storageengine.dataregion.flush.MemTableFlushTask;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.IMemTable;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.IWritableMemChunk;
@@ -259,6 +260,24 @@ public class UnsealedTsFileRecoverPerformer extends 
AbstractTsFileRecoverPerform
         // set recover progress index for pipe
         
PipeDataNodeAgent.runtime().assignProgressIndexForTsFileRecovery(tsFileResource);
 
+        try {
+          long memTableSize = recoveryMemTable.memSize();
+          double compressionRatio = ((double) memTableSize) / writer.getPos();
+          logger.info(
+              "The compression ratio of tsfile {} is {}, totalMemTableSize: 
{}, the file size: {}",
+              writer.getFile().getAbsolutePath(),
+              String.format("%.2f", compressionRatio),
+              memTableSize,
+              writer.getPos());
+          CompressionRatio.getInstance().updateRatio(memTableSize, 
writer.getPos());
+        } catch (IOException e) {
+          logger.error(
+              "{}: {} update compression ratio failed",
+              databaseName,
+              tsFileResource.getTsFile().getName(),
+              e);
+        }
+
         // if we put following codes in the 'if' clause above, this file can 
be continued writing
         // into it
         // currently, we close this file anyway

Reply via email to