aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/cache/cacherpc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenstore/cache/cacherpc.cpp')
-rw-r--r--src/zenstore/cache/cacherpc.cpp24
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)
{