diff options
| author | Stefan Boberg <[email protected]> | 2021-09-03 16:57:29 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-03 16:57:29 +0200 |
| commit | 298bbbecf5f5e9a1916279b725a1706f9b5ce3ef (patch) | |
| tree | 7113fb36af0d3678371dc3033b152f297ba2ef42 | |
| parent | Make sure build scripts fails if the devenv build fails (diff) | |
| download | zen-298bbbecf5f5e9a1916279b725a1706f9b5ce3ef.tar.xz zen-298bbbecf5f5e9a1916279b725a1706f9b5ce3ef.zip | |
Removed legacy key-value cache (may be reinstated in another form in the future)
| -rw-r--r-- | zenserver/cache/kvcache.cpp | 212 | ||||
| -rw-r--r-- | zenserver/cache/kvcache.h | 39 | ||||
| -rw-r--r-- | zenserver/config.cpp | 2 | ||||
| -rw-r--r-- | zenserver/config.h | 1 | ||||
| -rw-r--r-- | zenserver/zenserver.cpp | 21 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj | 2 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj.filters | 6 |
7 files changed, 0 insertions, 283 deletions
diff --git a/zenserver/cache/kvcache.cpp b/zenserver/cache/kvcache.cpp deleted file mode 100644 index d78329ee9..000000000 --- a/zenserver/cache/kvcache.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "kvcache.h" - -#include <zencore/httpserver.h> -#include <zencore/memory.h> -#include <zencore/timer.h> -#include "cachestore.h" -#include "upstream/jupiter.h" - -#include <spdlog/spdlog.h> - -namespace zen { - -using namespace fmt::literals; -using namespace std::literals; - -////////////////////////////////////////////////////////////////////////// - -struct HttpKvCacheService::AccessTracker -{ - AccessTracker(); - ~AccessTracker(); - - void TrackAccess(std::string_view Key); - void Flush(); - -private: - RwLock m_Lock; - ChunkingLinearAllocator m_AccessRecordAllocator{8192}; -}; - -HttpKvCacheService::AccessTracker::AccessTracker() -{ -} - -HttpKvCacheService::AccessTracker::~AccessTracker() -{ - RwLock::ExclusiveLockScope _(m_Lock); -} - -void -HttpKvCacheService::AccessTracker::Flush() -{ - RwLock::ExclusiveLockScope _(m_Lock); - - m_AccessRecordAllocator.Reset(); -} - -void -HttpKvCacheService::AccessTracker::TrackAccess(std::string_view Key) -{ - // Once it matters, this should use a thread-local means of updating this data, - // like Concurrency::combinable or similar - - RwLock::ExclusiveLockScope _(m_Lock); - - const uint64_t KeySize = Key.size(); - void* Ptr = m_AccessRecordAllocator.Alloc(KeySize + 1); - memcpy(Ptr, Key.data(), KeySize); - reinterpret_cast<uint8_t*>(Ptr)[KeySize] = 0; -} - -////////////////////////////////////////////////////////////////////////// - -HttpKvCacheService::HttpKvCacheService() -{ - m_Cloud = new CloudCacheClient(CloudCacheClientOptions{ - .ServiceUrl = "https://jupiter.devtools.epicgames.com"sv, - .DdcNamespace = "ue4.ddc"sv, - .BlobStoreNamespace = "test.ddc"sv, - .OAuthProvider = "https://epicgames.okta.com/oauth2/auso645ojjWVdRI3d0x7/v1/token"sv, - .OAuthClientId = "0oao91lrhqPiAlaGD0x7"sv, - .OAuthSecret = "-GBWjjenhCgOwhxL5yBKNJECVIoDPH0MK4RDuN7d"sv, - }); - m_AccessTracker = std::make_unique<AccessTracker>(); -} - -HttpKvCacheService::~HttpKvCacheService() -{ -} - -const char* -HttpKvCacheService::BaseUri() const -{ - return "/cache/"; -} - -void -HttpKvCacheService::HandleRequest(zen::HttpServerRequest& Request) -{ - using namespace std::literals; - - std::string_view Key = Request.RelativeUri(); - - switch (auto Verb = Request.RequestVerb()) - { - using enum zen::HttpVerb; - - case kHead: - case kGet: - { - m_AccessTracker->TrackAccess(Key); - - CacheValue Value; - bool Success = m_cache.Get(Key, Value); - - if (!Success) - { - Success = m_cache_.Get(Key, Value); - - if (!Success) - { - CloudCacheSession Session(m_Cloud); - - zen::Stopwatch Timer; - - if (CloudCacheResult Result = Session.GetDerivedData("default", Key); Result.Success) - { - Success = true; - - spdlog::debug("upstream HIT after {:5} {:6}! {}", - zen::NiceTimeSpanMs(Timer.getElapsedTimeMs()), - NiceBytes(Result.Value.Size()), - Key); - - Value.Value = Result.Value; - } - else - { - spdlog::debug("upstream miss after {:5}! {}", zen::NiceTimeSpanMs(Timer.getElapsedTimeMs()), Key); - } - } - - if (Success && (Value.Value.Size() <= m_InMemoryBlobSizeThreshold)) - { - m_cache.Put(Key, Value); - } - } - - if (!Success) - { - Request.WriteResponse(zen::HttpResponse::NotFound); - } - else - { - if (Verb == zen::HttpVerb::kHead) - { - Request.SetSuppressResponseBody(); - Request.WriteResponse(zen::HttpResponse::OK, zen::HttpContentType::kBinary, Value.Value); - } - else - { - Request.WriteResponse(zen::HttpResponse::OK, zen::HttpContentType::kBinary, Value.Value); - } - } - } - break; - - case kPut: - { - if (zen::IoBuffer Body = Request.ReadPayload()) - { - CacheValue Value; - Value.Value = Body; - - if (Value.Value.Size() <= m_InMemoryBlobSizeThreshold) - { - m_cache.Put(Key, Value); - } - - // m_cache_.Put(Key, Value); - - CloudCacheSession Session(m_Cloud); - - zen::Stopwatch Timer; - - CloudCacheResult Result = Session.PutDerivedData("default", Key, Value.Value); - - spdlog::debug("upstream PUT '{}', took {:5} {:6}! {}", - Result.Success ? "OK" : "FAILED", - zen::NiceTimeSpanMs(Timer.getElapsedTimeMs()), - NiceBytes(Value.Value.Size()), - Key); - - Request.WriteResponse(zen::HttpResponse::Created); - } - else - { - return; - } - } - break; - - case kDelete: - // should this do anything? - return Request.WriteResponse(zen::HttpResponse::OK); - - case kPost: - break; - - default: - break; - } -} - -void -HttpKvCacheService::Flush() -{ -} - -} // namespace zen diff --git a/zenserver/cache/kvcache.h b/zenserver/cache/kvcache.h deleted file mode 100644 index ce4fb1d36..000000000 --- a/zenserver/cache/kvcache.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#pragma once - -#include <zencore/httpserver.h> - -#include "cachestore.h" -#include "upstream/jupiter.h" - -namespace zen { - -/** - * Generic HTTP K/V cache - can be consumed via legacy DDC interfaces, with - * no key format conventions. Values are blobs - */ - -class HttpKvCacheService : public zen::HttpService -{ -public: - HttpKvCacheService(); - ~HttpKvCacheService(); - - virtual const char* BaseUri() const override; - virtual void HandleRequest(zen::HttpServerRequest& Request) override; - void Flush(); - -private: - MemoryCacheStore m_cache; - FileCacheStore m_cache_{"E:\\Local-DDC-Write", "E:\\Local-DDC" /* Read */}; - RefPtr<CloudCacheClient> m_Cloud; - uint64_t m_InMemoryBlobSizeThreshold = 16384; - uint64_t m_FileBlobSizeThreshold = 16 * 1024 * 1024; - - struct AccessTracker; - - std::unique_ptr<AccessTracker> m_AccessTracker; -}; - -} // namespace zen diff --git a/zenserver/config.cpp b/zenserver/config.cpp index 8fe9f72f2..06b355b7a 100644 --- a/zenserver/config.cpp +++ b/zenserver/config.cpp @@ -235,8 +235,6 @@ ParseServiceConfig(const std::filesystem::path& DataRoot, ZenServiceConfig& Serv throw std::exception("fatal zen global config script ({}) failure: {}"_format(ConfigScript, e.what()).c_str()); } - ServiceConfig.LegacyCacheEnabled = lua["legacycache"]["enable"].get_or(ServiceConfig.LegacyCacheEnabled); - const std::string path = lua["legacycache"]["readpath"].get_or(std::string()); ServiceConfig.MeshEnabled = lua["mesh"]["enable"].get_or(ServiceConfig.MeshEnabled); auto UpdateStringValueFromConfig = [](const sol::table& Table, std::string_view Key, std::string& OutValue) { diff --git a/zenserver/config.h b/zenserver/config.h index d0f5f7280..a5ef94fc4 100644 --- a/zenserver/config.h +++ b/zenserver/config.h @@ -42,7 +42,6 @@ struct ZenUpstreamCacheConfig struct ZenServiceConfig { - bool LegacyCacheEnabled = false; bool StructuredCacheEnabled = true; bool ShouldCrash = false; // Option for testing crash handling bool MeshEnabled = false; // Experimental p2p mesh discovery diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index 5f8b23efa..3adae0acc 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -52,7 +52,6 @@ // #include "admin/admin.h" -#include "cache/kvcache.h" #include "cache/structuredcache.h" #include "cache/structuredcachestore.h" #include "compute/apply.h" @@ -128,16 +127,6 @@ public: zen::CreateDirectories(ApplySandboxDir); m_HttpFunctionService = std::make_unique<zen::HttpFunctionService>(*m_CasStore, *m_CidStore, ApplySandboxDir); - if (ServiceConfig.LegacyCacheEnabled) - { - spdlog::info("instantiating legacy cache service"); - m_CacheService.reset(new zen::HttpKvCacheService()); - } - else - { - spdlog::info("NOT instantiating legacy cache service"); - } - if (ServiceConfig.StructuredCacheEnabled) { using namespace std::literals; @@ -230,12 +219,6 @@ public: m_Http.AddEndpoint(m_CasService); - if (m_CacheService) - { - spdlog::info("instantiating legacy cache service"); - m_Http.AddEndpoint(*m_CacheService); - } - if (m_StructuredCacheService) { m_Http.AddEndpoint(*m_StructuredCacheService); @@ -342,9 +325,6 @@ public: if (m_CidStore) m_CidStore->Flush(); - if (m_CacheService) - m_CacheService->Flush(); - if (m_StructuredCacheService) m_StructuredCacheService->Flush(); @@ -369,7 +349,6 @@ private: zen::CasScrubber m_Scrubber{*m_CasStore}; HttpTestService m_TestService; zen::HttpCasService m_CasService{*m_CasStore}; - std::unique_ptr<zen::HttpKvCacheService> m_CacheService; zen::RefPtr<zen::ProjectStore> m_ProjectStore; zen::Ref<zen::LocalProjectService> m_LocalProjectService; std::unique_ptr<zen::HttpLaunchService> m_HttpLaunchService; diff --git a/zenserver/zenserver.vcxproj b/zenserver/zenserver.vcxproj index a58b57090..e4b40e13e 100644 --- a/zenserver/zenserver.vcxproj +++ b/zenserver/zenserver.vcxproj @@ -114,7 +114,6 @@ <ClInclude Include="projectstore.h" /> <ClInclude Include="cache\cacheagent.h" /> <ClInclude Include="cache\cachestore.h" /> - <ClInclude Include="cache\kvcache.h" /> <ClInclude Include="testing\launch.h" /> <ClInclude Include="casstore.h" /> <ClInclude Include="diag\diagsvcs.h" /> @@ -125,7 +124,6 @@ <ClInclude Include="vfs.h" /> </ItemGroup> <ItemGroup> - <ClCompile Include="cache\kvcache.cpp" /> <ClCompile Include="cache\structuredcache.cpp" /> <ClCompile Include="cache\structuredcachestore.cpp" /> <ClCompile Include="compute\apply.cpp" /> diff --git a/zenserver/zenserver.vcxproj.filters b/zenserver/zenserver.vcxproj.filters index 1fe902731..ca16caf77 100644 --- a/zenserver/zenserver.vcxproj.filters +++ b/zenserver/zenserver.vcxproj.filters @@ -12,9 +12,6 @@ <ClInclude Include="cache\cachestore.h"> <Filter>cache</Filter> </ClInclude> - <ClInclude Include="cache\kvcache.h"> - <Filter>cache</Filter> - </ClInclude> <ClInclude Include="diag\diagsvcs.h"> <Filter>diag</Filter> </ClInclude> @@ -66,9 +63,6 @@ <ClCompile Include="cache\structuredcache.cpp"> <Filter>cache</Filter> </ClCompile> - <ClCompile Include="cache\kvcache.cpp"> - <Filter>cache</Filter> - </ClCompile> <ClCompile Include="config.cpp" /> <ClCompile Include="diag\logging.cpp" /> <ClCompile Include="cache\structuredcachestore.cpp" /> |