aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzousar <[email protected]>2025-03-26 16:57:48 -0600
committerzousar <[email protected]>2025-03-26 16:57:48 -0600
commitdf9bbea4fb1dad9e8c853f14600259a4af12d334 (patch)
treec2ecf0f521ecb9198d8dcfed8373c8ec640abd1e /src
parentRemoved do_nothing from entry.js (diff)
downloadzen-df9bbea4fb1dad9e8c853f14600259a4af12d334.tar.xz
zen-df9bbea4fb1dad9e8c853f14600259a4af12d334.zip
Descriptive type conversion messages
Handling decompression or validation errors with more descriptive messages
Diffstat (limited to 'src')
-rw-r--r--src/zenserver/projectstore/httpprojectstore.cpp54
1 files changed, 39 insertions, 15 deletions
diff --git a/src/zenserver/projectstore/httpprojectstore.cpp b/src/zenserver/projectstore/httpprojectstore.cpp
index f9a13220a..6313fd69e 100644
--- a/src/zenserver/projectstore/httpprojectstore.cpp
+++ b/src/zenserver/projectstore/httpprojectstore.cpp
@@ -896,27 +896,51 @@ HttpProjectService::HandleChunkByCidRequest(HttpRouterRequest& Req)
CompressedBuffer Compressed = CompressedBuffer::FromCompressedNoValidate(std::move(Value));
IoBuffer DecompressedBuffer = Compressed.Decompress().AsIoBuffer();
- if (AcceptType == ZenContentType::kJSON || AcceptType == ZenContentType::kYAML ||
- AcceptType == ZenContentType::kCbObject)
+ if (DecompressedBuffer)
{
- CbValidateError CbErr = ValidateCompactBinary(DecompressedBuffer.GetView(), CbValidateMode::Default);
- if (!!CbErr)
+ if (AcceptType == ZenContentType::kJSON || AcceptType == ZenContentType::kYAML ||
+ AcceptType == ZenContentType::kCbObject)
{
- m_ProjectStats.BadRequestCount++;
- ZEN_DEBUG("chunk - '{}/{}/{}' WRONGTYPE", ProjectId, OplogId, Cid);
- return HttpReq.WriteResponse(HttpResponseCode::NotAcceptable,
- HttpContentType::kText,
- fmt::format("chunk - '{}' WRONGTYPE", Cid));
- }
+ CbValidateError CbErr = ValidateCompactBinary(DecompressedBuffer.GetView(), CbValidateMode::Default);
+ if (!!CbErr)
+ {
+ m_ProjectStats.BadRequestCount++;
+ ZEN_DEBUG(
+ "chunk - '{}/{}/{}' WRONGTYPE. Reason: `Requested {} format, but could not convert to object`",
+ ProjectId,
+ OplogId,
+ Cid,
+ ToString(AcceptType));
+ return HttpReq.WriteResponse(
+ HttpResponseCode::NotAcceptable,
+ HttpContentType::kText,
+ fmt::format("Content format not supported, requested {} format, but could not convert to object",
+ ToString(AcceptType)));
+ }
- m_ProjectStats.ChunkHitCount++;
- CbObject ContainerObject = LoadCompactBinaryObject(DecompressedBuffer);
- return HttpReq.WriteResponse(HttpResponseCode::OK, ContainerObject);
+ m_ProjectStats.ChunkHitCount++;
+ CbObject ContainerObject = LoadCompactBinaryObject(DecompressedBuffer);
+ return HttpReq.WriteResponse(HttpResponseCode::OK, ContainerObject);
+ }
+ else
+ {
+ Value = DecompressedBuffer;
+ Value.SetContentType(ZenContentType::kBinary);
+ }
}
else
{
- Value = DecompressedBuffer;
- Value.SetContentType(ZenContentType::kBinary);
+ m_ProjectStats.BadRequestCount++;
+ ZEN_DEBUG("chunk - '{}/{}/{}' WRONGTYPE. Reason: `Requested {} format, but could not decompress stored data`",
+ ProjectId,
+ OplogId,
+ Cid,
+ ToString(AcceptType));
+ return HttpReq.WriteResponse(
+ HttpResponseCode::NotAcceptable,
+ HttpContentType::kText,
+ fmt::format("Content format not supported, requested {} format, but could not decompress stored data",
+ ToString(AcceptType)));
}
}
m_ProjectStats.ChunkHitCount++;