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 <[email protected]> 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
