aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/projectstore/remoteprojectstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-09-23 16:23:31 +0200
committerGitHub Enterprise <[email protected]>2025-09-23 16:23:31 +0200
commit2de9f8cdca2929dabbe65e6a51adf27d1a45d830 (patch)
tree9ae4833e1ec94445273b0163c9b755ab6156ee36 /src/zenserver/projectstore/remoteprojectstore.cpp
parent5.7.2-pre1 (diff)
downloadzen-2de9f8cdca2929dabbe65e6a51adf27d1a45d830.tar.xz
zen-2de9f8cdca2929dabbe65e6a51adf27d1a45d830.zip
limit number of chunks per block (#508)
- Improvement: Chunk block generation for `zen oplog-export` and `zen builds upload` command are now limited to max 4000 chunks per block zen builds list-block testing function to check results for recently used blocks in a context
Diffstat (limited to 'src/zenserver/projectstore/remoteprojectstore.cpp')
-rw-r--r--src/zenserver/projectstore/remoteprojectstore.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/zenserver/projectstore/remoteprojectstore.cpp b/src/zenserver/projectstore/remoteprojectstore.cpp
index e61ccd917..407a284c1 100644
--- a/src/zenserver/projectstore/remoteprojectstore.cpp
+++ b/src/zenserver/projectstore/remoteprojectstore.cpp
@@ -1167,6 +1167,7 @@ BuildContainer(CidStore& ChunkStore,
ProjectStore::Project& Project,
ProjectStore::Oplog& Oplog,
size_t MaxBlockSize,
+ size_t MaxChunksPerBlock,
size_t MaxChunkEmbedSize,
size_t ChunkFileSizeLimit,
bool BuildBlocks,
@@ -2020,7 +2021,7 @@ BuildContainer(CidStore& ChunkStore,
}
BlockSize += PayloadSize;
- if (BlockSize >= MaxBlockSize && (CurrentOpKey != LastOpKey))
+ if ((BlockSize >= MaxBlockSize || ChunksInBlock.size() > MaxChunksPerBlock) && (CurrentOpKey != LastOpKey))
{
NewBlock();
}
@@ -2079,7 +2080,7 @@ BuildContainer(CidStore& ChunkStore,
BlockSize += CompressedBuffer::GetHeaderSizeForNoneEncoder() + Source.Size;
if (BuildBlocks)
{
- if (BlockSize >= MaxBlockSize)
+ if (BlockSize >= MaxBlockSize || ChunksInBlock.size() > MaxChunksPerBlock)
{
NewBlock();
}
@@ -2286,6 +2287,7 @@ BuildContainer(CidStore& ChunkStore,
ProjectStore::Project& Project,
ProjectStore::Oplog& Oplog,
size_t MaxBlockSize,
+ size_t MaxChunksPerBlock,
size_t MaxChunkEmbedSize,
size_t ChunkFileSizeLimit,
bool BuildBlocks,
@@ -2303,6 +2305,7 @@ BuildContainer(CidStore& ChunkStore,
Project,
Oplog,
MaxBlockSize,
+ MaxChunksPerBlock,
MaxChunkEmbedSize,
ChunkFileSizeLimit,
BuildBlocks,
@@ -2325,6 +2328,7 @@ SaveOplog(CidStore& ChunkStore,
ProjectStore::Project& Project,
ProjectStore::Oplog& Oplog,
size_t MaxBlockSize,
+ size_t MaxChunksPerBlock,
size_t MaxChunkEmbedSize,
size_t ChunkFileSizeLimit,
bool EmbedLooseFiles,
@@ -2474,6 +2478,7 @@ SaveOplog(CidStore& ChunkStore,
Project,
Oplog,
MaxBlockSize,
+ MaxChunksPerBlock,
MaxChunkEmbedSize,
ChunkFileSizeLimit,
RemoteStoreInfo.CreateBlocks,