diff options
| author | mattpetersepic <[email protected]> | 2022-02-08 20:44:35 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-02-08 20:44:35 -0700 |
| commit | 976ef2f4ea785bfe43a765a3c8604afc61342bb1 (patch) | |
| tree | 9c72d1b1566e757a30a4092979abd1dbd05a0901 | |
| parent | Use a clean and detatched head instead of pulling a branch along (diff) | |
| download | zen-976ef2f4ea785bfe43a765a3c8604afc61342bb1.tar.xz zen-976ef2f4ea785bfe43a765a3c8604afc61342bb1.zip | |
Remove the backwards compatibility for the Zen CachePolicy changes no… (#49)
Remove the backwards compatibility for the Zen CachePolicy changes now that there has been enough time for all internal users of the old protocol to update.
| -rw-r--r-- | zenserver/cache/structuredcache.cpp | 246 | ||||
| -rw-r--r-- | zenserver/cache/structuredcache.h | 33 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamcache.cpp | 3 | ||||
| -rw-r--r-- | zenutil/cache/cachepolicy.cpp | 12 | ||||
| -rw-r--r-- | zenutil/include/zenutil/cache/cachepolicy.h | 7 |
5 files changed, 46 insertions, 255 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp index 49e5896d1..e23030e24 100644 --- a/zenserver/cache/structuredcache.cpp +++ b/zenserver/cache/structuredcache.cpp @@ -996,155 +996,9 @@ HttpStructuredCacheService::PutCacheRecord(PutRequestData& Request, const CbPack return PutResult::Success; } -#if BACKWARDS_COMPATABILITY_JAN2022 -void -HttpStructuredCacheService::HandleRpcGetCacheRecordsLegacy(zen::HttpServerRequest& Request, CbObjectView RpcRequest) -{ - ZEN_TRACE_CPU("Z$::RpcGetCacheRecords"); - - CbPackage RpcResponse; - CbObjectView Params = RpcRequest["Params"sv].AsObjectView(); - CacheRecordPolicy BatchPolicy = LoadCacheRecordPolicy(Params["Policy"sv].AsObjectView()); - std::vector<CacheKey> CacheKeys; - std::vector<IoBuffer> CacheValues; - std::vector<size_t> UpstreamRequests; - - ZEN_ASSERT(RpcRequest["Method"sv].AsString() == "GetCacheRecords"sv); - - for (CbFieldView KeyView : Params["CacheKeys"sv]) - { - CbObjectView KeyObject = KeyView.AsObjectView(); - CacheKeys.push_back(CacheKey::Create(KeyObject["Bucket"sv].AsString(), KeyObject["Hash"sv].AsHash())); - } - - if (CacheKeys.empty()) - { - return Request.WriteResponse(HttpResponseCode::BadRequest); - } - - CacheValues.resize(CacheKeys.size()); - - for (size_t KeyIndex = 0; const CacheKey& Key : CacheKeys) - { - ZenCacheValue CacheValue; - uint32_t MissingCount = 0; - uint32_t MissingReadFromUpstreamCount = 0; - - if (EnumHasAllFlags(BatchPolicy.GetRecordPolicy(), CachePolicy::QueryLocal) && m_CacheStore.Get(Key.Bucket, Key.Hash, CacheValue) && - CacheValue.Value.GetContentType() == ZenContentType::kCbObject) - { - CbObjectView CacheRecord(CacheValue.Value.Data()); - CacheRecord.IterateAttachments( - [this, &MissingCount, &MissingReadFromUpstreamCount, &RpcResponse, &BatchPolicy](CbFieldView AttachmentHash) { - CachePolicy ValuePolicy = BatchPolicy.GetRecordPolicy(); - if (!EnumHasAllFlags(ValuePolicy, CachePolicy::QueryLocal)) - { - // A value that is requested without the Query flag (such as None/Disable) does not count as missing, because we - // didn't ask for it and thus the record is complete in its absence. - if (EnumHasAllFlags(ValuePolicy, CachePolicy::QueryRemote)) - { - MissingReadFromUpstreamCount++; - MissingCount++; - } - } - else if (EnumHasAllFlags(ValuePolicy, CachePolicy::SkipData)) - { - if (!m_CidStore.ContainsChunk(AttachmentHash.AsHash())) - { - if (EnumHasAllFlags(ValuePolicy, CachePolicy::QueryRemote)) - { - MissingReadFromUpstreamCount++; - } - MissingCount++; - } - } - else - { - if (IoBuffer Chunk = m_CidStore.FindChunkByCid(AttachmentHash.AsHash())) - { - ZEN_ASSERT(Chunk.GetSize() > 0); - RpcResponse.AddAttachment(CbAttachment(CompressedBuffer::FromCompressed(SharedBuffer(Chunk)))); - } - else - { - if (EnumHasAllFlags(ValuePolicy, CachePolicy::QueryRemote)) - { - MissingReadFromUpstreamCount++; - } - MissingCount++; - } - } - }); - } - - // Searching upstream is not implemented in this legacy support function - if (CacheValue.Value && (MissingCount == 0 || EnumHasAllFlags(BatchPolicy.GetRecordPolicy(), CachePolicy::PartialRecord))) - { - ZEN_DEBUG("HIT - '{}/{}' {} '{}' (LOCAL) {}", - Key.Bucket, - Key.Hash, - NiceBytes(CacheValue.Value.Size()), - ToString(CacheValue.Value.GetContentType()), - MissingCount ? "(PARTIAL)" : ""sv); - - CacheValues[KeyIndex] = std::move(CacheValue.Value); - m_CacheStats.HitCount++; - } - else - { - if (!EnumHasAnyFlags(BatchPolicy.GetRecordPolicy(), CachePolicy::Query)) - { - // If they requested no query, do not record this as a miss - ZEN_DEBUG("DISABLEDQUERY - '{}/{}'", Key.Bucket, Key.Hash); - } - else - { - ZEN_DEBUG("MISS - '{}/{}' {}", Key.Bucket, Key.Hash, MissingCount ? "(PARTIAL)"sv : ""sv); - m_CacheStats.MissCount++; - } - } - - ++KeyIndex; - } - - CbObjectWriter ResponseObject; - - ResponseObject.BeginArray("Result"sv); - for (const IoBuffer& Value : CacheValues) - { - if (Value) - { - CbObjectView Record(Value.Data()); - ResponseObject << Record; - } - else - { - ResponseObject.AddNull(); - } - } - ResponseObject.EndArray(); - - RpcResponse.SetObject(ResponseObject.Save()); - - BinaryWriter MemStream; - RpcResponse.Save(MemStream); - - Request.WriteResponse(HttpResponseCode::OK, - HttpContentType::kCbPackage, - IoBuffer(IoBuffer::Wrap, MemStream.GetData(), MemStream.GetSize())); -} -#endif - void HttpStructuredCacheService::HandleRpcGetCacheRecords(zen::HttpServerRequest& HttpRequest, CbObjectView RpcRequest) { -#if BACKWARDS_COMPATABILITY_JAN2022 - // Backwards compatability; - if (RpcRequest["Params"sv].AsObjectView()["CacheKeys"sv]) - { - return HandleRpcGetCacheRecordsLegacy(HttpRequest, RpcRequest); - } -#endif ZEN_TRACE_CPU("Z$::RpcGetCacheRecords"); CbObjectView Params = RpcRequest["Params"sv].AsObjectView(); @@ -1559,13 +1413,6 @@ HttpStructuredCacheService::HandleRpcPutCacheValues(zen::HttpServerRequest& Requ void HttpStructuredCacheService::HandleRpcGetCacheValues(zen::HttpServerRequest& HttpRequest, CbObjectView RpcRequest) { -#if BACKWARDS_COMPATABILITY_JAN2022 - if (RpcRequest["Params"sv].AsObjectView()["ChunkRequests"]) - { - return HandleRpcGetCacheChunks(HttpRequest, RpcRequest); - } -#endif - ZEN_TRACE_CPU("Z$::RpcGetCacheValues"); CbObjectView Params = RpcRequest["Params"sv].AsObjectView(); @@ -1737,28 +1584,23 @@ HttpStructuredCacheService::HandleRpcGetCacheChunks(zen::HttpServerRequest& Http std::vector<KeyRequestData> KeyRequests; std::vector<ChunkRequestData> Chunks; - BACKWARDS_COMPATABILITY_JAN2022_CODE(bool SendValueOnly = false;) - if (!TryGetCacheChunks_Parse(KeyRequests, Chunks BACKWARDS_COMPATABILITY_JAN2022_CODE(, SendValueOnly), RpcRequest)) + if (!TryGetCacheChunks_Parse(KeyRequests, Chunks, RpcRequest)) { return HttpRequest.WriteResponse(HttpResponseCode::BadRequest); } GetCacheChunks_LoadKeys(KeyRequests); GetCacheChunks_LoadChunks(Chunks); - GetCacheChunks_SendResults(Chunks, HttpRequest BACKWARDS_COMPATABILITY_JAN2022_CODE(, SendValueOnly)); + GetCacheChunks_SendResults(Chunks, HttpRequest); } bool -HttpStructuredCacheService::TryGetCacheChunks_Parse(std::vector<GetCacheChunks::detail::KeyRequestData>& KeyRequests, - std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, - BACKWARDS_COMPATABILITY_JAN2022_CODE(bool& SendValueOnly, ) CbObjectView RpcRequest) +HttpStructuredCacheService::TryGetCacheChunks_Parse(std::vector<GetCacheChunks::detail::KeyRequestData>& KeyRequests, + std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, + CbObjectView RpcRequest) { using namespace GetCacheChunks::detail; -#if BACKWARDS_COMPATABILITY_JAN2022 - SendValueOnly = RpcRequest["MethodVersion"sv].AsInt32() < 1; -#else ZEN_ASSERT(RpcRequest["Method"sv].AsString() == "GetCacheChunks"sv); -#endif CbObjectView Params = RpcRequest["Params"sv].AsObjectView(); std::string_view DefaultPolicyText = Params["DefaultPolicy"sv].AsString(); @@ -1809,13 +1651,7 @@ HttpStructuredCacheService::TryGetCacheChunks_Parse(std::vector<GetCacheChunks:: Chunk.Upstream.RawSize = RequestObject["RawSize"sv].AsUInt64(UINT64_MAX); std::string_view PolicyText = RequestObject["Policy"sv].AsString(); Chunk.DownstreamPolicy = !PolicyText.empty() ? ParseCachePolicy(PolicyText) : DefaultPolicy; -#if BACKWARDS_COMPATABILITY_JAN2022 - if (SendValueOnly) - { - Chunk.DownstreamPolicy = Chunk.DownstreamPolicy & (~CachePolicy::SkipData); - } -#endif - Chunk.IsRecordRequest = (bool)Chunk.Upstream.ValueId; + Chunk.IsRecordRequest = (bool)Chunk.Upstream.ValueId; if (!Chunk.IsRecordRequest || Chunk.Upstream.ChunkId == IoHash::Zero) { @@ -2088,8 +1924,7 @@ HttpStructuredCacheService::GetCacheChunks_LoadChunks(std::vector<GetCacheChunks void HttpStructuredCacheService::GetCacheChunks_SendResults(std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, - zen::HttpServerRequest& HttpRequest - BACKWARDS_COMPATABILITY_JAN2022_CODE(, bool SendValueOnly)) + zen::HttpServerRequest& HttpRequest) { using namespace GetCacheChunks::detail; @@ -2099,57 +1934,40 @@ HttpStructuredCacheService::GetCacheChunks_SendResults(std::vector<GetCacheChunk Writer.BeginArray("Result"sv); for (ChunkRequestData& Chunk : Chunks) { -#if BACKWARDS_COMPATABILITY_JAN2022 - if (SendValueOnly) - { - if (Chunk.Value) - { - Writer << Chunk.Upstream.ChunkId; - RpcResponse.AddAttachment(CbAttachment(Chunk.Value)); - } - else - { - Writer << IoHash::Zero; - } - } - else -#endif + Writer.BeginObject(); { - Writer.BeginObject(); + if (Chunk.Exists) { - if (Chunk.Exists) + Writer.AddHash("RawHash"sv, Chunk.Upstream.ChunkId); + if (Chunk.Value && !EnumHasAllFlags(Chunk.DownstreamPolicy, CachePolicy::SkipData)) { - Writer.AddHash("RawHash"sv, Chunk.Upstream.ChunkId); - if (Chunk.Value && !EnumHasAllFlags(Chunk.DownstreamPolicy, CachePolicy::SkipData)) - { - RpcResponse.AddAttachment(CbAttachment(Chunk.Value)); - } - else - { - Writer.AddInteger("RawSize"sv, Chunk.TotalSize); - } - - ZEN_DEBUG("CHUNKHIT - '{}/{}/{}' {} '{}' ({})", - Chunk.Upstream.Key.Bucket, - Chunk.Upstream.Key.Hash, - Chunk.Upstream.ValueId, - NiceBytes(Chunk.TotalSize), - Chunk.IsRecordRequest ? "Record"sv : "Value"sv, - Chunk.Source); - m_CacheStats.HitCount++; - } - else if (!EnumHasAnyFlags(Chunk.DownstreamPolicy, CachePolicy::Query)) - { - ZEN_DEBUG("CHUNKSKIP - '{}/{}/{}'", Chunk.Upstream.Key.Bucket, Chunk.Upstream.Key.Hash, Chunk.Upstream.ValueId); + RpcResponse.AddAttachment(CbAttachment(Chunk.Value)); } else { - ZEN_DEBUG("MISS - '{}/{}/{}'", Chunk.Upstream.Key.Bucket, Chunk.Upstream.Key.Hash, Chunk.Upstream.ValueId); - m_CacheStats.MissCount++; + Writer.AddInteger("RawSize"sv, Chunk.TotalSize); } + + ZEN_DEBUG("CHUNKHIT - '{}/{}/{}' {} '{}' ({})", + Chunk.Upstream.Key.Bucket, + Chunk.Upstream.Key.Hash, + Chunk.Upstream.ValueId, + NiceBytes(Chunk.TotalSize), + Chunk.IsRecordRequest ? "Record"sv : "Value"sv, + Chunk.Source); + m_CacheStats.HitCount++; + } + else if (!EnumHasAnyFlags(Chunk.DownstreamPolicy, CachePolicy::Query)) + { + ZEN_DEBUG("CHUNKSKIP - '{}/{}/{}'", Chunk.Upstream.Key.Bucket, Chunk.Upstream.Key.Hash, Chunk.Upstream.ValueId); + } + else + { + ZEN_DEBUG("MISS - '{}/{}/{}'", Chunk.Upstream.Key.Bucket, Chunk.Upstream.Key.Hash, Chunk.Upstream.ValueId); + m_CacheStats.MissCount++; } - Writer.EndObject(); } + Writer.EndObject(); } Writer.EndArray(); diff --git a/zenserver/cache/structuredcache.h b/zenserver/cache/structuredcache.h index 14b001e48..9d60c5bf4 100644 --- a/zenserver/cache/structuredcache.h +++ b/zenserver/cache/structuredcache.h @@ -11,9 +11,6 @@ #include <memory> #include <vector> -// Include the define for BACKWARDS_COMPATABILITY_JAN2022 -#include <zenutil/cache/cachepolicy.h> - namespace spdlog { class logger; } @@ -108,25 +105,21 @@ private: void HandlePutCacheValue(zen::HttpServerRequest& Request, const CacheRef& Ref, CachePolicy PolicyFromURL); void HandleRpcRequest(zen::HttpServerRequest& Request); void HandleRpcPutCacheRecords(zen::HttpServerRequest& Request, const CbPackage& BatchRequest); -#if BACKWARDS_COMPATABILITY_JAN2022 - void HandleRpcGetCacheRecordsLegacy(zen::HttpServerRequest& Request, CbObjectView BatchRequest); -#endif - void HandleRpcGetCacheRecords(zen::HttpServerRequest& Request, CbObjectView BatchRequest); - void HandleRpcPutCacheValues(zen::HttpServerRequest& Request, const CbPackage& BatchRequest); - void HandleRpcGetCacheValues(zen::HttpServerRequest& Request, CbObjectView BatchRequest); - void HandleRpcGetCacheChunks(zen::HttpServerRequest& Request, CbObjectView BatchRequest); - void HandleCacheBucketRequest(zen::HttpServerRequest& Request, std::string_view Bucket); - virtual void HandleStatsRequest(zen::HttpServerRequest& Request) override; - virtual void HandleStatusRequest(zen::HttpServerRequest& Request) override; - PutResult PutCacheRecord(PutRequestData& Request, const CbPackage* Package); - - bool TryGetCacheChunks_Parse(std::vector<GetCacheChunks::detail::KeyRequestData>& KeyRequests, - std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, - BACKWARDS_COMPATABILITY_JAN2022_CODE(bool& SendValueOnly, ) CbObjectView RpcRequest); + void HandleRpcGetCacheRecords(zen::HttpServerRequest& Request, CbObjectView BatchRequest); + void HandleRpcPutCacheValues(zen::HttpServerRequest& Request, const CbPackage& BatchRequest); + void HandleRpcGetCacheValues(zen::HttpServerRequest& Request, CbObjectView BatchRequest); + void HandleRpcGetCacheChunks(zen::HttpServerRequest& Request, CbObjectView BatchRequest); + void HandleCacheBucketRequest(zen::HttpServerRequest& Request, std::string_view Bucket); + virtual void HandleStatsRequest(zen::HttpServerRequest& Request) override; + virtual void HandleStatusRequest(zen::HttpServerRequest& Request) override; + PutResult PutCacheRecord(PutRequestData& Request, const CbPackage* Package); + + bool TryGetCacheChunks_Parse(std::vector<GetCacheChunks::detail::KeyRequestData>& KeyRequests, + std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, + CbObjectView RpcRequest); void GetCacheChunks_LoadKeys(std::vector<GetCacheChunks::detail::KeyRequestData>& KeyRequests); void GetCacheChunks_LoadChunks(std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks); - void GetCacheChunks_SendResults(std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, - zen::HttpServerRequest& HttpRequest BACKWARDS_COMPATABILITY_JAN2022_CODE(, bool SendValueOnly)); + void GetCacheChunks_SendResults(std::vector<GetCacheChunks::detail::ChunkRequestData>& Chunks, zen::HttpServerRequest& HttpRequest); spdlog::logger& Log() { return m_Log; } spdlog::logger& m_Log; diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp index 5990536a9..d02a00fcd 100644 --- a/zenserver/upstream/upstreamcache.cpp +++ b/zenserver/upstream/upstreamcache.cpp @@ -776,9 +776,6 @@ namespace detail { BatchRequest << "Method"sv << "GetCacheChunks"; -#if BACKWARDS_COMPATABILITY_JAN2022 - BatchRequest.AddInteger("MethodVersion"sv, 1); -#endif BatchRequest.BeginObject("Params"sv); { CachePolicy DefaultPolicy = CacheChunkRequests[0]->Policy; diff --git a/zenutil/cache/cachepolicy.cpp b/zenutil/cache/cachepolicy.cpp index 8c10ea674..3bca363bb 100644 --- a/zenutil/cache/cachepolicy.cpp +++ b/zenutil/cache/cachepolicy.cpp @@ -122,7 +122,7 @@ ConvertToUpstream(CachePolicy Policy) // Use the downstream value for all other flags. CachePolicy UpstreamPolicy = CachePolicy::None; - + if (EnumHasAllFlags(Policy, CachePolicy::QueryRemote)) { UpstreamPolicy |= CachePolicy::QueryLocal; @@ -206,12 +206,6 @@ OptionalCacheRecordPolicy CacheRecordPolicy::Load(const CbObjectView Object) { std::string_view BasePolicyText = Object["BasePolicy"sv].AsString(); -#if BACKWARDS_COMPATABILITY_JAN2022 - if (BasePolicyText.empty()) - { - BasePolicyText = Object["DefaultValuePolicy"sv].AsString(); - } -#endif if (BasePolicyText.empty()) { return {}; @@ -228,14 +222,10 @@ CacheRecordPolicy::Load(const CbObjectView Object) return {}; } CachePolicy Policy = ParseCachePolicy(PolicyText); -#if BACKWARDS_COMPATABILITY_JAN2022 - Policy = Policy & CacheValuePolicy::PolicyMask; -#else if (EnumHasAnyFlags(Policy, ~CacheValuePolicy::PolicyMask)) { return {}; } -#endif Builder.AddValuePolicy(Id, Policy); } diff --git a/zenutil/include/zenutil/cache/cachepolicy.h b/zenutil/include/zenutil/cache/cachepolicy.h index efcc4fb49..b249982fc 100644 --- a/zenutil/include/zenutil/cache/cachepolicy.h +++ b/zenutil/include/zenutil/cache/cachepolicy.h @@ -11,13 +11,6 @@ #include <gsl/gsl-lite.hpp> #include <span> -#define BACKWARDS_COMPATABILITY_JAN2022 1 -#if BACKWARDS_COMPATABILITY_JAN2022 -# define BACKWARDS_COMPATABILITY_JAN2022_CODE(...) __VA_ARGS__ -#else -# define BACKWARDS_COMPATABILITY_JAN2022_CODE(...) -#endif - namespace zen::Private { class ICacheRecordPolicyShared; } |