You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2024/07/11 07:48:40 UTC
(iotdb) 02/06: Fix negative compression ratios after restart (#12879)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rc/1.3.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5422add39882b1741b11b287c5404569e4a98a8c
Author: Haonan <hh...@outlook.com>
AuthorDate: Mon Jul 8 22:40:10 2024 +0800
Fix negative compression ratios after restart (#12879)
---
.../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 080867b8800..705027ab7d5 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.PipeAgent;
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
PipeAgent.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