diff options
| author | Dan Engelbrecht <[email protected]> | 2024-05-14 22:04:33 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-05-14 22:04:33 +0200 |
| commit | 9fd0734361e46266756fe3b212df1ad2c734bfec (patch) | |
| tree | 413bb825bced57f01bb285bf77a25bc22218075b /src/zenstore/cache/cacherpc.cpp | |
| parent | 5.5.2-pre1 (diff) | |
| download | zen-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.cpp | 19 |
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; |