From b049249d3285dbe73d608431038f2502c779c2f1 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sat, 2 Oct 2021 16:51:27 +0200 Subject: structured cache: Added some more stats (hits/misses/upstream_hits) --- zenserver/cache/structuredcache.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 8ab0276c5..dc22a15d1 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -868,7 +868,9 @@ HttpStructuredCacheService::HandleStatusRequest(zen::HttpServerRequest& Request) const uint64_t TotalCount = HitCount + MissCount; Cbo.BeginObject("cache"); + Cbo << "hits" << HitCount << "misses" << MissCount; Cbo << "hit_ratio" << (TotalCount > 0 ? (double(HitCount) / double(TotalCount) * 100.0) : 0.0); + Cbo << "upstream_hits" << m_CacheStats.UpstreamHitCount; Cbo << "upstream_ratio" << (HitCount > 0 ? (double(UpstreamHitCount) / double(HitCount)) * 100.0 : 0.0); Cbo.EndObject(); -- cgit v1.2.3 From c058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Sun, 3 Oct 2021 16:25:43 +0200 Subject: Added support for SkipData cache policy. --- zenserver/cache/structuredcache.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'zenserver/cache/structuredcache.cpp') 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 -- cgit v1.2.3 From 5ad46537b07f1bf30af58c8cc2b85b64e45ee4c3 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sun, 3 Oct 2021 17:00:52 +0200 Subject: structurec cache: Added ad hoc special case for /z$/stats.json request --- zenserver/cache/structuredcache.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 8ab0276c5..d7b409c6c 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -200,8 +200,10 @@ HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request) { std::string_view Key = Request.RelativeUri(); - if (Key.empty()) + if (Key.empty() || Key == "stats.json") { + $.Cancel(); + return HandleStatusRequest(Request); } -- cgit v1.2.3 From 18186784b56fe81d2ef5e7e53398491d494f7551 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sun, 3 Oct 2021 20:11:05 +0200 Subject: http: Moved logic for body suppression to a more central location this should prevent some mistake-induced bugs hopefully --- zenserver/cache/structuredcache.cpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'zenserver/cache/structuredcache.cpp') diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 72fc7f3af..d6174caf6 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -272,10 +272,6 @@ HttpStructuredCacheService::HandleCacheRecordRequest(HttpServerRequest& Request, case kHead: case kGet: { - if (Verb == kHead) - { - Request.SetSuppressResponseBody(); - } HandleGetCacheRecord(Request, Ref, Policy); } break; @@ -692,10 +688,6 @@ HttpStructuredCacheService::HandleCachePayloadRequest(HttpServerRequest& Request case kHead: case kGet: { - if (Verb == kHead) - { - Request.SetSuppressResponseBody(); - } HandleGetCachePayload(Request, Ref, Policy); } break; -- cgit v1.2.3