diff options
| author | Dan Engelbrecht <[email protected]> | 2024-08-19 10:43:23 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-08-19 10:43:23 +0200 |
| commit | 5d87e76e844a950bbf406e49505e1227fe7aa69a (patch) | |
| tree | 69e3999b536f1ec13abeefd0a695006e58d00442 /src/zenstore/cache/cacherpc.cpp | |
| parent | 5.5.4 (diff) | |
| download | zen-5d87e76e844a950bbf406e49505e1227fe7aa69a.tar.xz zen-5d87e76e844a950bbf406e49505e1227fe7aa69a.zip | |
If we fail to get compression info for a partial request - log and report a miss (#122)
* If we fail to get compression info for a partial request - log and report a miss
Diffstat (limited to 'src/zenstore/cache/cacherpc.cpp')
| -rw-r--r-- | src/zenstore/cache/cacherpc.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/zenstore/cache/cacherpc.cpp b/src/zenstore/cache/cacherpc.cpp index f6e5d16b3..b7f456d5c 100644 --- a/src/zenstore/cache/cacherpc.cpp +++ b/src/zenstore/cache/cacherpc.cpp @@ -1700,25 +1700,37 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest }; if (AcceptsPartialChunks && IsPartialRangeRequest(Request)) { + bool Ok = true; uint64_t FragmentRawOffset = 0; if (Request.RequestedOffset > 0) { OodleCompressor Compressor; OodleCompressionLevel CompressionLevel; uint64_t BlockSize = 0; - const bool bOk = Request.Value.TryGetCompressParameters(Compressor, CompressionLevel, BlockSize); - ZEN_ASSERT(bOk); - if (BlockSize > 0) + Ok = Request.Value.TryGetCompressParameters(Compressor, CompressionLevel, BlockSize); + if (Ok) { - FragmentRawOffset = (Request.RequestedOffset / BlockSize) * BlockSize; + if (BlockSize > 0) + { + FragmentRawOffset = (Request.RequestedOffset / BlockSize) * BlockSize; + } + else + { + FragmentRawOffset = Request.RequestedOffset; + } } else { - FragmentRawOffset = Request.RequestedOffset; + ZEN_WARN("Failed to get compression parameters for {}/{}/{}/{}", + Namespace, + Request.Key->Key.Bucket, + Request.Key->Key.Hash, + Request.Key->ValueId); } } - CompressedBuffer PartialValue = Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize); + CompressedBuffer PartialValue = + Ok ? Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize) : CompressedBuffer::Null; if (PartialValue) { |