This is an automated email from the ASF dual-hosted git repository.
haonan 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 b71435fe2e4 Fix negative compression ratios after restart (#12879)
b71435fe2e4 is described below
commit b71435fe2e463a05955804e5878a5a6f76dce5f0
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 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