aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-10-24 22:15:22 +0200
committerGitHub <[email protected]>2023-10-24 22:15:22 +0200
commit8e6ccf2fa22354e541fe9c308011dacd4dfd8f38 (patch)
tree802faf452475a17e7f57fd109c5dbb6496392b2c
parentmerge disk and memory layers (#493) (diff)
downloadzen-8e6ccf2fa22354e541fe9c308011dacd4dfd8f38.tar.xz
zen-8e6ccf2fa22354e541fe9c308011dacd4dfd8f38.zip
removed HttpCidStore (#497)
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/zenserver/httpcidstore.cpp124
-rw-r--r--src/zenserver/httpcidstore.h35
-rw-r--r--src/zenserver/zenserver.cpp4
-rw-r--r--src/zenserver/zenserver.h2
5 files changed, 1 insertions, 165 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 23e7395bd..a64f3bb18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@
- Bugfix: Fix implementation when claiming GC reserve during GC
- Bugfix: Catch exceptions when processing requests with asio http and log errors
- Improved: Command `zen gc-status` now gives details about storage, when last GC occured, how long until next GC etc
+- Improvement: Removed HttpCidStore (was already deprecated)
- Changed: Cache access and write log are disabled by default
- Changed: We no longer purge out block location for missing blocks to allow testing/analisys of snapshots of server states without copying full set of data
- Changed: Merged cache memory layer with cache disk layer to reduce memory and cpu overhead
diff --git a/src/zenserver/httpcidstore.cpp b/src/zenserver/httpcidstore.cpp
deleted file mode 100644
index 233a45edb..000000000
--- a/src/zenserver/httpcidstore.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include "httpcidstore.h"
-
-#include <zencore/compress.h>
-#include <zencore/fmtutils.h>
-#include <zencore/logging.h>
-#include <zenstore/cidstore.h>
-
-#include <gsl/gsl-lite.hpp>
-
-namespace zen {
-
-HttpCidService::HttpCidService(CidStore& Store) : m_CidStore(Store)
-{
- m_Router.AddPattern("cid", "([0-9A-Fa-f]{40})");
-
- m_Router.RegisterRoute(
- "{cid}",
- [this](HttpRouterRequest& Req) {
- IoHash Hash = IoHash::FromHexString(Req.GetCapture(1));
- ZEN_DEBUG("CID request for {}", Hash);
-
- HttpServerRequest& ServerRequest = Req.ServerRequest();
-
- switch (ServerRequest.RequestVerb())
- {
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- {
- if (IoBuffer Value = m_CidStore.FindChunkByCid(Hash))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Value);
- }
-
- return ServerRequest.WriteResponse(HttpResponseCode::NotFound);
- }
- break;
-
- case HttpVerb::kPut:
- {
- IoBuffer Payload = ServerRequest.ReadPayload();
- IoHash RawHash;
- uint64_t RawSize;
- if (!CompressedBuffer::ValidateCompressedHeader(Payload, RawHash, RawSize))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::UnsupportedMediaType);
- }
-
- // URI hash must match content hash
- if (RawHash != Hash)
- {
- return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
- }
-
- m_CidStore.AddChunk(Payload, RawHash);
-
- return ServerRequest.WriteResponse(HttpResponseCode::OK);
- }
- break;
-
- default:
- break;
- }
- },
- HttpVerb::kGet | HttpVerb::kPut | HttpVerb::kHead);
-}
-
-const char*
-HttpCidService::BaseUri() const
-{
- return "/cid/";
-}
-
-void
-HttpCidService::HandleRequest(zen::HttpServerRequest& Request)
-{
- if (Request.RelativeUri().empty())
- {
- // Root URI request
-
- switch (Request.RequestVerb())
- {
- case HttpVerb::kPut:
- case HttpVerb::kPost:
- {
- IoBuffer Payload = Request.ReadPayload();
- IoHash RawHash;
- uint64_t RawSize;
- if (!CompressedBuffer::ValidateCompressedHeader(Payload, RawHash, RawSize))
- {
- return Request.WriteResponse(HttpResponseCode::UnsupportedMediaType);
- }
-
- ZEN_DEBUG("CID POST request for {} ({} bytes)", RawHash, Payload.Size());
-
- auto InsertResult = m_CidStore.AddChunk(Payload, RawHash);
-
- if (InsertResult.New)
- {
- return Request.WriteResponse(HttpResponseCode::Created);
- }
- else
- {
- return Request.WriteResponse(HttpResponseCode::OK);
- }
- }
- break;
-
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- break;
-
- default:
- break;
- }
- }
- else
- {
- m_Router.HandleRequest(Request);
- }
-}
-
-} // namespace zen
diff --git a/src/zenserver/httpcidstore.h b/src/zenserver/httpcidstore.h
deleted file mode 100644
index 8e7832b35..000000000
--- a/src/zenserver/httpcidstore.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#pragma once
-
-#include <zenhttp/httpserver.h>
-
-namespace zen {
-
-/**
- * Simple CID store HTTP endpoint
- *
- * Note that since this does not end up pinning any of the chunks it's only really useful for a small subset of use cases where you know a
- * chunk exists in the underlying CID store. Thus it's mainly useful for internal use when communicating between Zen store instances
- *
- * Using this interface for adding CID chunks makes little sense except for testing purposes as garbage collection may reap anything you add
- * before anything ever gets to access it
- */
-
-class CidStore;
-
-class HttpCidService : public HttpService
-{
-public:
- explicit HttpCidService(CidStore& Store);
- ~HttpCidService() = default;
-
- virtual const char* BaseUri() const override;
- virtual void HandleRequest(zen::HttpServerRequest& Request) override;
-
-private:
- CidStore& m_CidStore;
- HttpRequestRouter m_Router;
-};
-
-} // namespace zen
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp
index d53b602c1..e5346abf0 100644
--- a/src/zenserver/zenserver.cpp
+++ b/src/zenserver/zenserver.cpp
@@ -210,7 +210,6 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen
m_CidStore = std::make_unique<CidStore>(m_GcManager);
m_CidStore->Initialize(Config);
- m_CidService.reset(new HttpCidService{*m_CidStore});
ZEN_INFO("instantiating project service");
@@ -237,8 +236,6 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen
m_Http->RegisterService(*m_HttpProjectService);
}
- m_Http->RegisterService(*m_CidService);
-
m_FrontendService = std::make_unique<HttpFrontendService>(m_ContentRoot);
if (m_FrontendService)
@@ -614,7 +611,6 @@ ZenServer::Cleanup()
m_HttpProjectService.reset();
m_ProjectStore = {};
- m_CidService.reset();
m_CidStore.reset();
m_AuthService.reset();
m_AuthMgr.reset();
diff --git a/src/zenserver/zenserver.h b/src/zenserver/zenserver.h
index cc5b53cef..25e45ccd0 100644
--- a/src/zenserver/zenserver.h
+++ b/src/zenserver/zenserver.h
@@ -30,7 +30,6 @@ ZEN_THIRD_PARTY_INCLUDES_END
#include "cache/structuredcachestore.h"
#include "diag/diagsvcs.h"
#include "frontend/frontend.h"
-#include "httpcidstore.h"
#include "objectstore/objectstore.h"
#include "projectstore/httpprojectstore.h"
#include "projectstore/projectstore.h"
@@ -123,7 +122,6 @@ private:
#if ZEN_WITH_TESTS
HttpTestingService m_TestingService;
#endif
- std::unique_ptr<HttpCidService> m_CidService;
RefPtr<ProjectStore> m_ProjectStore;
std::unique_ptr<HttpProjectService> m_HttpProjectService;
std::unique_ptr<UpstreamCache> m_UpstreamCache;