This is an automated email from the ASF dual-hosted git repository.
tanxinyu 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 ac110bce20b Use max bytes to allocate WAL compressed buffer (#12928)
ac110bce20b is described below
commit ac110bce20b85ee1677252c8aeb2d3aa6b4ffc6c
Author: shuwenwei <[email protected]>
AuthorDate: Mon Jul 15 19:21:14 2024 +0800
Use max bytes to allocate WAL compressed buffer (#12928)
* use max bytes to allocate WAL compressed buffer
* calculate max bytes with lz4 compressor
---
.../db/storageengine/dataregion/wal/buffer/WALBuffer.java | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
index 304b182d923..d2b14597c50 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
@@ -38,6 +38,8 @@ import
org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALMode;
import
org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
import org.apache.iotdb.db.utils.MmapUtil;
+import org.apache.tsfile.compress.ICompressor;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -149,7 +151,8 @@ public class WALBuffer extends AbstractWALBuffer {
try {
workingBuffer = ByteBuffer.allocateDirect(ONE_THIRD_WAL_BUFFER_SIZE);
idleBuffer = ByteBuffer.allocateDirect(ONE_THIRD_WAL_BUFFER_SIZE);
- compressedByteBuffer =
ByteBuffer.allocateDirect(ONE_THIRD_WAL_BUFFER_SIZE);
+ compressedByteBuffer =
+
ByteBuffer.allocateDirect(getCompressedByteBufferSize(ONE_THIRD_WAL_BUFFER_SIZE));
} catch (OutOfMemoryError e) {
logger.error("Fail to allocate wal node-{}'s buffer because out of
memory.", identifier, e);
close();
@@ -157,6 +160,10 @@ public class WALBuffer extends AbstractWALBuffer {
}
}
+ private int getCompressedByteBufferSize(int size) {
+ return
ICompressor.getCompressor(CompressionType.LZ4).getMaxBytesForCompression(size);
+ }
+
@Override
protected File rollLogWriter(long searchIndex, WALFileStatus fileStatus)
throws IOException {
File file = super.rollLogWriter(searchIndex, fileStatus);
@@ -175,7 +182,7 @@ public class WALBuffer extends AbstractWALBuffer {
MmapUtil.clean(compressedByteBuffer);
workingBuffer = ByteBuffer.allocateDirect(capacity);
idleBuffer = ByteBuffer.allocateDirect(capacity);
- compressedByteBuffer = ByteBuffer.allocateDirect(capacity);
+ compressedByteBuffer =
ByteBuffer.allocateDirect(getCompressedByteBufferSize(capacity));
currentWALFileWriter.setCompressedByteBuffer(compressedByteBuffer);
} catch (OutOfMemoryError e) {
logger.error("Fail to allocate wal node-{}'s buffer because out of
memory.", identifier, e);