aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-03 16:57:29 +0200
committerStefan Boberg <[email protected]>2021-09-03 16:57:29 +0200
commit298bbbecf5f5e9a1916279b725a1706f9b5ce3ef (patch)
tree7113fb36af0d3678371dc3033b152f297ba2ef42
parentMake sure build scripts fails if the devenv build fails (diff)
downloadzen-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.cpp212
-rw-r--r--zenserver/cache/kvcache.h39
-rw-r--r--zenserver/config.cpp2
-rw-r--r--zenserver/config.h1
-rw-r--r--zenserver/zenserver.cpp21
-rw-r--r--zenserver/zenserver.vcxproj2
-rw-r--r--zenserver/zenserver.vcxproj.filters6
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" />