From 941bcce13fbef35d08fc44a84632625bd7087dc0 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 30 Sep 2021 21:26:21 +0200 Subject: structured cache: fixed how HEAD requests are handled the SetSuppressResponseBody() is currently sensitive to ordering and would end up getting called too late to apply fixes UE-129788, UE-129793 --- zenserver/cache/structuredcache.cpp | 2 +- zenserver/testing/httptest.cpp | 17 +++++++++++++++++ zenserver/testing/httptest.h | 6 ++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index c71beb700..4c89b995a 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -270,11 +270,11 @@ HttpStructuredCacheService::HandleCacheRecordRequest(HttpServerRequest& Request, case kHead: case kGet: { - HandleGetCacheRecord(Request, Ref, Policy); if (Verb == kHead) { Request.SetSuppressResponseBody(); } + HandleGetCacheRecord(Request, Ref, Policy); } break; case kPut: diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp index 18d63a6ef..01866a63b 100644 --- a/zenserver/testing/httptest.cpp +++ b/zenserver/testing/httptest.cpp @@ -14,6 +14,23 @@ HttpTestingService::HttpTestingService() [this](HttpRouterRequest& Req) { Req.ServerRequest().WriteResponse(HttpResponseCode::OK); }, HttpVerb::kGet); + m_Router.RegisterRoute( + "metrics", + [this](HttpRouterRequest& Req) { + metrics::OperationTiming::Scope _(m_TimingStats); + Req.ServerRequest().WriteResponse(HttpResponseCode::OK); + }, + HttpVerb::kGet); + + m_Router.RegisterRoute( + "get_metrics", + [this](HttpRouterRequest& Req) { + CbObjectWriter Cbo; + EmitSnapshot("requests", m_TimingStats, Cbo); + Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Cbo.Save()); + }, + HttpVerb::kGet); + m_Router.RegisterRoute( "json", [this](HttpRouterRequest& Req) { diff --git a/zenserver/testing/httptest.h b/zenserver/testing/httptest.h index f55780d05..f7ea0c31c 100644 --- a/zenserver/testing/httptest.h +++ b/zenserver/testing/httptest.h @@ -3,6 +3,7 @@ #pragma once #include +#include #include #include @@ -39,8 +40,9 @@ public: }; private: - HttpRequestRouter m_Router; - std::atomic m_Counter{0}; + HttpRequestRouter m_Router; + std::atomic m_Counter{0}; + metrics::OperationTiming m_TimingStats; RwLock m_RwLock; std::unordered_map> m_HandlerMap; -- cgit v1.2.3