aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-10-03 16:25:43 +0200
committerPer Larsson <[email protected]>2021-10-03 16:25:43 +0200
commitc058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5 (patch)
tree3b5cb8e3241a2a724a7872e2e33f062f632d0967 /zenserver/cache/structuredcache.cpp
parentFixed missing content type. (diff)
downloadzen-c058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5.tar.xz
zen-c058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5.zip
Added support for SkipData cache policy.
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index 8ab0276c5..fe9fdd415 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -418,10 +418,17 @@ HttpStructuredCacheService::HandleGetCacheRecord(zen::HttpServerRequest& Request
if (ValidationResult != CbValidateError::None)
{
ZEN_WARN("GET - '{}/{}' '{}' FAILED, invalid compact binary object", Ref.BucketSegment, Ref.HashKey, ToString(AcceptType));
+ m_CacheStats.MissCount++;
return Request.WriteResponse(HttpResponseCode::NotFound, HttpContentType::kText, "Invalid cache record"sv);
}
- const bool SkipAttachments = zen::CachePolicy::SkipAttachments == (Policy & zen::CachePolicy::SkipAttachments);
+ if ((Policy & CachePolicy::SkipData) == CachePolicy::SkipData)
+ {
+ m_CacheStats.HitCount++;
+ return Request.WriteResponse(HttpResponseCode::OK);
+ }
+
+ const bool SkipAttachments = (Policy & CachePolicy::SkipAttachments) == CachePolicy::SkipAttachments;
uint32_t AttachmentCount = 0;
uint32_t ValidCount = 0;
uint64_t AttachmentBytes = 0ull;
@@ -487,7 +494,14 @@ HttpStructuredCacheService::HandleGetCacheRecord(zen::HttpServerRequest& Request
m_CacheStats.UpstreamHitCount++;
}
- Request.WriteResponse(HttpResponseCode::OK, Value.Value.GetContentType(), Value.Value);
+ if ((Policy & CachePolicy::SkipData) == CachePolicy::SkipData)
+ {
+ Request.WriteResponse(HttpResponseCode::OK);
+ }
+ else
+ {
+ Request.WriteResponse(HttpResponseCode::OK, Value.Value.GetContentType(), Value.Value);
+ }
}
}
@@ -740,7 +754,14 @@ HttpStructuredCacheService::HandleGetCachePayload(zen::HttpServerRequest& Reques
m_CacheStats.UpstreamHitCount++;
}
- Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Payload);
+ if ((Policy & CachePolicy::SkipData) == CachePolicy::SkipData)
+ {
+ Request.WriteResponse(HttpResponseCode::OK);
+ }
+ else
+ {
+ Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Payload);
+ }
}
void