diff options
| author | Dan Engelbrecht <[email protected]> | 2024-09-10 10:05:14 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2024-09-10 10:05:14 +0200 |
| commit | 40a5b59e5f8efe57bee93527c1c61ad821b5e4ba (patch) | |
| tree | c363420f5530305c13d159675e406f4e5665de08 /src/zenstore/cache/cacherpc.cpp | |
| parent | 5.5.7-pre0 (diff) | |
| download | zen-40a5b59e5f8efe57bee93527c1c61ad821b5e4ba.tar.xz zen-40a5b59e5f8efe57bee93527c1c61ad821b5e4ba.zip | |
don't add batch overhead if we are only going to put one cache value
Diffstat (limited to 'src/zenstore/cache/cacherpc.cpp')
| -rw-r--r-- | src/zenstore/cache/cacherpc.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/zenstore/cache/cacherpc.cpp b/src/zenstore/cache/cacherpc.cpp index b7f456d5c..6cdfeabd0 100644 --- a/src/zenstore/cache/cacherpc.cpp +++ b/src/zenstore/cache/cacherpc.cpp @@ -808,9 +808,16 @@ CacheRpcHandler::HandleRpcPutCacheValues(const CacheRequestContext& Context, con std::vector<size_t> BatchResultIndexes; std::vector<bool> Results; std::vector<CacheKey> UpstreamCacheKeys; + uint64_t RequestCount = RequestsArray.Num(); { - Results.reserve(RequestsArray.Num()); - ZenCacheStore::PutBatch Batch(m_CacheStore, *Namespace, BatchResults); + Results.reserve(RequestCount); + std::unique_ptr<ZenCacheStore::PutBatch> Batch; + if (RequestCount > 1) + { + Batch = std::make_unique<ZenCacheStore::PutBatch>(m_CacheStore, *Namespace, BatchResults); + BatchResults.reserve(RequestCount); + BatchResultIndexes.reserve(RequestCount); + } for (CbFieldView RequestField : RequestsArray) { ZEN_TRACE_CPU("Z$::RpcPutCacheValues::Request"); @@ -861,11 +868,18 @@ CacheRpcHandler::HandleRpcPutCacheValues(const CacheRequestContext& Context, con Key.Hash, {.Value = Value, .RawSize = RawSize, .RawHash = RawHash}, {}, - &Batch); + Batch.get()); m_CacheStats.WriteCount++; + if (Batch) + { + BatchResultIndexes.push_back(Results.size()); + Results.push_back(false); + } + else + { + Results.push_back(true); + } TransferredSize = Chunk.GetCompressedSize(); - BatchResultIndexes.push_back(Results.size()); - Results.push_back(false); } else { |