aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/cache/cacherpc.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-05-14 22:04:33 +0200
committerGitHub Enterprise <[email protected]>2024-05-14 22:04:33 +0200
commit9fd0734361e46266756fe3b212df1ad2c734bfec (patch)
tree413bb825bced57f01bb285bf77a25bc22218075b /src/zenstore/cache/cacherpc.cpp
parent5.5.2-pre1 (diff)
downloadzen-9fd0734361e46266756fe3b212df1ad2c734bfec.tar.xz
zen-9fd0734361e46266756fe3b212df1ad2c734bfec.zip
fix argument order when logging missed partial chunk (#81)
* fix argument order when logging missed partial chunk * make partial value a temporary variable helps with debugging as the warning on bad range can tell the original size * add asserts
Diffstat (limited to 'src/zenstore/cache/cacherpc.cpp')
-rw-r--r--src/zenstore/cache/cacherpc.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/zenstore/cache/cacherpc.cpp b/src/zenstore/cache/cacherpc.cpp
index 903033085..f12cee923 100644
--- a/src/zenstore/cache/cacherpc.cpp
+++ b/src/zenstore/cache/cacherpc.cpp
@@ -1661,33 +1661,36 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest
FragmentRawOffset = Request.RequestedOffset;
}
}
- Request.Value =
+
+ CompressedBuffer PartialValue =
Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize == 0 ? 1u : Request.RequestedSize);
- if (Request.Value)
+ if (PartialValue)
{
- uint64_t FragmentLength = Request.Value.DecodeRawSize();
+ uint64_t FragmentRawLength = PartialValue.DecodeRawSize();
+ ZEN_ASSERT(FragmentRawOffset <= Request.RequestedOffset);
+ ZEN_ASSERT(FragmentRawOffset + FragmentRawLength >= Request.RequestedOffset + Request.RequestedSize);
IoHashStream FragmentHashStream;
FragmentHashStream.Append(Request.Key->ChunkId.Hash, sizeof(Request.Key->ChunkId.Hash));
FragmentHashStream.Append(&FragmentRawOffset, sizeof(FragmentRawOffset));
- FragmentHashStream.Append(&FragmentLength, sizeof(FragmentLength));
+ FragmentHashStream.Append(&FragmentRawLength, sizeof(FragmentRawLength));
IoHash FragmentHash = FragmentHashStream.GetHash();
Writer.AddHash("FragmentHash", FragmentHash);
Writer.AddInteger("FragmentOffset", FragmentRawOffset);
- RpcResponse.AddAttachment(CbAttachment(Request.Value, FragmentHash));
+ RpcResponse.AddAttachment(CbAttachment(PartialValue, FragmentHash));
}
else
{
ZEN_WARN("GETCACHECHUNKS MISS (rawsize: {}, offset: {}, size: {}) - '{}/{}/{}/{}' in {}",
Namespace,
- Request.Key->Key.Bucket,
- Request.Key->Key.Hash,
- Request.Key->ValueId,
Request.Value.DecodeRawSize(),
Request.RequestedOffset,
Request.RequestedSize,
+ Request.Key->Key.Bucket,
+ Request.Key->Key.Hash,
+ Request.Key->ValueId,
NiceLatencyNs(Request.ElapsedTimeUs * 1000));
m_CacheStats.MissCount++;
Request.Exists = false;