aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/iobuffer.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-03-14 16:50:18 +0100
committerGitHub Enterprise <[email protected]>2024-03-14 16:50:18 +0100
commit0a935231009cb21680d364ef125f0296a5a5bed6 (patch)
tree7e55a67ae60883b0eab71a0d636aeec23f307d14 /src/zencore/iobuffer.cpp
parentclean up test linking (#4) (diff)
downloadzen-0a935231009cb21680d364ef125f0296a5a5bed6.tar.xz
zen-0a935231009cb21680d364ef125f0296a5a5bed6.zip
special treatment large oplog attachments v2 (#5)
- Bugfix: Install Ctrl+C handler earlier when doing `zen oplog-export` and `zen oplog-export` to properly cancel jobs - Improvement: Add ability to block a set of CAS entries from GC in project store - Improvement: Large attachments and loose files are now split into smaller chunks and stored in blocks during oplog export
Diffstat (limited to 'src/zencore/iobuffer.cpp')
-rw-r--r--src/zencore/iobuffer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp
index c8bc4a629..96a893082 100644
--- a/src/zencore/iobuffer.cpp
+++ b/src/zencore/iobuffer.cpp
@@ -704,8 +704,9 @@ IoBufferBuilder::MakeFromTemporaryFile(const std::filesystem::path& FileName)
IoHash
HashBuffer(IoBuffer& Buffer)
{
- size_t BufferSize = Buffer.Size();
- if (BufferSize >= (65536 + 32768))
+ size_t BufferSize = Buffer.Size();
+ static const size_t BufferingSize = 512 * 1024;
+ if (BufferSize >= (BufferingSize + BufferingSize / 2))
{
IoBufferFileReference _;
if (Buffer.GetFileReference(/* out */ _))
@@ -714,7 +715,7 @@ HashBuffer(IoBuffer& Buffer)
IoHashStream HashStream;
while (Offset < BufferSize)
{
- size_t ChunkSize = Min<size_t>(BufferSize - Offset, 65536u);
+ size_t ChunkSize = Min<size_t>(BufferSize - Offset, BufferingSize);
IoBuffer SubRange(Buffer, Offset, ChunkSize);
HashStream.Append(SubRange.GetData(), SubRange.GetSize());
Offset += ChunkSize;