aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-20 12:08:44 +0200
committerStefan Boberg <[email protected]>2021-09-20 12:08:44 +0200
commit782351959f697fca6b0804c134467b7d9c29da1a (patch)
treefdd6c841a567e69e3d0b45089de70c7e7d0bb756 /zenserver/cache/structuredcache.cpp
parenttrivial: include cleanup (diff)
downloadzen-782351959f697fca6b0804c134467b7d9c29da1a.tar.xz
zen-782351959f697fca6b0804c134467b7d9c29da1a.zip
Moved more code into zen namespace, for consistency
Also removed snapshot_manifest (remnants of vfs prototype)
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp132
1 files changed, 66 insertions, 66 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index c66b1f98d..b3867bbc3 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -67,7 +67,7 @@ enum class CachePolicy : uint8_t
gsl_DEFINE_ENUM_BITMASK_OPERATORS(CachePolicy);
CachePolicy
-ParseCachePolicy(const zen::HttpServerRequest::QueryParams& QueryParams)
+ParseCachePolicy(const HttpServerRequest::QueryParams& QueryParams)
{
CachePolicy QueryPolicy = CachePolicy::Query;
@@ -76,7 +76,7 @@ ParseCachePolicy(const zen::HttpServerRequest::QueryParams& QueryParams)
if (!Opts.empty())
{
QueryPolicy = CachePolicy::None;
- zen::ForEachStrTok(Opts, ',', [&QueryPolicy](const std::string_view& Opt) {
+ ForEachStrTok(Opts, ',', [&QueryPolicy](const std::string_view& Opt) {
if (Opt == detail::cacheopt::Local)
{
QueryPolicy |= CachePolicy::QueryLocal;
@@ -97,7 +97,7 @@ ParseCachePolicy(const zen::HttpServerRequest::QueryParams& QueryParams)
if (!Opts.empty())
{
StorePolicy = CachePolicy::None;
- zen::ForEachStrTok(Opts, ',', [&StorePolicy](const std::string_view& Opt) {
+ ForEachStrTok(Opts, ',', [&StorePolicy](const std::string_view& Opt) {
if (Opt == detail::cacheopt::Local)
{
StorePolicy |= CachePolicy::StoreLocal;
@@ -117,7 +117,7 @@ ParseCachePolicy(const zen::HttpServerRequest::QueryParams& QueryParams)
std::string_view Opts = QueryParams.GetValue("skip"sv);
if (!Opts.empty())
{
- zen::ForEachStrTok(Opts, ',', [&SkipPolicy](const std::string_view& Opt) {
+ ForEachStrTok(Opts, ',', [&SkipPolicy](const std::string_view& Opt) {
if (Opt == detail::cacheopt::Meta)
{
SkipPolicy |= CachePolicy::SkipMeta;
@@ -144,11 +144,11 @@ ParseCachePolicy(const zen::HttpServerRequest::QueryParams& QueryParams)
//////////////////////////////////////////////////////////////////////////
-HttpStructuredCacheService::HttpStructuredCacheService(::ZenCacheStore& InCacheStore,
- zen::CasStore& InStore,
- zen::CidStore& InCidStore,
+HttpStructuredCacheService::HttpStructuredCacheService(ZenCacheStore& InCacheStore,
+ CasStore& InStore,
+ CidStore& InCidStore,
std::unique_ptr<UpstreamCache> UpstreamCache)
-: m_Log(zen::logging::Get("cache"))
+: m_Log(logging::Get("cache"))
, m_CacheStore(InCacheStore)
, m_CasStore(InStore)
, m_CidStore(InCidStore)
@@ -173,7 +173,7 @@ HttpStructuredCacheService::Flush()
}
void
-HttpStructuredCacheService::HandleRequest(zen::HttpServerRequest& Request)
+HttpStructuredCacheService::HandleRequest(HttpServerRequest& Request)
{
CacheRef Ref;
@@ -188,7 +188,7 @@ HttpStructuredCacheService::HandleRequest(zen::HttpServerRequest& Request)
return HandleCacheBucketRequest(Request, Key);
}
- return Request.WriteResponse(zen::HttpResponseCode::BadRequest); // invalid URL
+ return Request.WriteResponse(HttpResponseCode::BadRequest); // invalid URL
}
const auto QueryParams = Request.GetQueryParams();
@@ -207,12 +207,12 @@ HttpStructuredCacheService::HandleRequest(zen::HttpServerRequest& Request)
}
void
-HttpStructuredCacheService::HandleCacheBucketRequest(zen::HttpServerRequest& Request, std::string_view Bucket)
+HttpStructuredCacheService::HandleCacheBucketRequest(HttpServerRequest& Request, std::string_view Bucket)
{
ZEN_UNUSED(Request, Bucket);
switch (auto Verb = Request.RequestVerb())
{
- using enum zen::HttpVerb;
+ using enum HttpVerb;
case kHead:
case kGet:
@@ -226,22 +226,22 @@ HttpStructuredCacheService::HandleCacheBucketRequest(zen::HttpServerRequest& Req
if (m_CacheStore.DropBucket(Bucket))
{
- return Request.WriteResponse(zen::HttpResponseCode::OK);
+ return Request.WriteResponse(HttpResponseCode::OK);
}
else
{
- return Request.WriteResponse(zen::HttpResponseCode::NotFound);
+ return Request.WriteResponse(HttpResponseCode::NotFound);
}
break;
}
}
void
-HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Request, CacheRef& Ref, CachePolicy Policy)
+HttpStructuredCacheService::HandleCacheRecordRequest(HttpServerRequest& Request, CacheRef& Ref, CachePolicy Policy)
{
switch (auto Verb = Request.RequestVerb())
{
- using enum zen::HttpVerb;
+ using enum HttpVerb;
case kHead:
case kGet:
@@ -253,7 +253,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
bool InUpstreamCache = false;
const bool QueryUpstream =
- !Success && m_UpstreamCache && (zen::CachePolicy::QueryRemote == (Policy & zen::CachePolicy::QueryRemote));
+ !Success && m_UpstreamCache && (CachePolicy::QueryRemote == (Policy & CachePolicy::QueryRemote));
if (QueryUpstream)
{
@@ -272,14 +272,14 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
{
if (CacheRecordType == ZenContentType::kCbObject)
{
- const zen::CbValidateError ValidationResult =
- zen::ValidateCompactBinary(UpstreamResult.Value, zen::CbValidateMode::All);
+ const CbValidateError ValidationResult =
+ ValidateCompactBinary(UpstreamResult.Value, CbValidateMode::All);
if (ValidationResult == CbValidateError::None)
{
- zen::CbObjectView CacheRecord(UpstreamResult.Value.Data());
+ CbObjectView CacheRecord(UpstreamResult.Value.Data());
- zen::CbObjectWriter IndexData;
+ CbObjectWriter IndexData;
IndexData.BeginArray("references");
CacheRecord.IterateAttachments([&](CbFieldView Attachment) { IndexData.AddHash(Attachment.AsHash()); });
IndexData.EndArray();
@@ -355,7 +355,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
{
ZEN_DEBUG("MISS - '{}/{}'", Ref.BucketSegment, Ref.HashKey);
- return Request.WriteResponse(zen::HttpResponseCode::NotFound);
+ return Request.WriteResponse(HttpResponseCode::NotFound);
}
if (Verb == kHead)
@@ -367,13 +367,13 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
{
CbObjectView CacheRecord(Value.Value.Data());
- const zen::CbValidateError ValidationResult = zen::ValidateCompactBinary(Value.Value, zen::CbValidateMode::All);
+ const CbValidateError ValidationResult = ValidateCompactBinary(Value.Value, CbValidateMode::All);
if (ValidationResult != CbValidateError::None)
{
ZEN_WARN("GET - cache record '{}/{}' FAILED, invalid compact binary object", Ref.BucketSegment, Ref.HashKey);
- return Request.WriteResponse(zen::HttpResponseCode::NotFound, HttpContentType::kText, "Invalid cache record"sv);
+ return Request.WriteResponse(HttpResponseCode::NotFound, HttpContentType::kText, "Invalid cache record"sv);
}
uint32_t AttachmentCount = 0;
@@ -401,7 +401,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
FoundCount,
AttachmentCount);
- return Request.WriteResponse(zen::HttpResponseCode::NotFound, HttpContentType::kText, "Missing attachments"sv);
+ return Request.WriteResponse(HttpResponseCode::NotFound, HttpContentType::kText, "Missing attachments"sv);
}
Package.SetObject(LoadCompactBinaryObject(Value.Value));
@@ -419,7 +419,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
IoBuffer Response(IoBuffer::Clone, MemStream.Data(), MemStream.Size());
- return Request.WriteResponse(zen::HttpResponseCode::OK, HttpContentType::kCbPackage, Response);
+ return Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kCbPackage, Response);
}
else
{
@@ -429,23 +429,23 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
NiceBytes(Value.Value.Size()),
InUpstreamCache ? "UPSTREAM" : "LOCAL");
- return Request.WriteResponse(zen::HttpResponseCode::OK, Value.Value.GetContentType(), Value.Value);
+ return Request.WriteResponse(HttpResponseCode::OK, Value.Value.GetContentType(), Value.Value);
}
}
break;
case kPut:
{
- zen::IoBuffer Body = Request.ReadPayload();
+ IoBuffer Body = Request.ReadPayload();
if (!Body || Body.Size() == 0)
{
- return Request.WriteResponse(zen::HttpResponseCode::BadRequest);
+ return Request.WriteResponse(HttpResponseCode::BadRequest);
}
const HttpContentType ContentType = Request.RequestContentType();
- const bool StoreUpstream = m_UpstreamCache && (zen::CachePolicy::StoreRemote == (Policy & zen::CachePolicy::StoreRemote));
+ const bool StoreUpstream = m_UpstreamCache && (CachePolicy::StoreRemote == (Policy & CachePolicy::StoreRemote));
if (ContentType == HttpContentType::kBinary || ContentType == HttpContentType::kUnknownContentType)
{
@@ -459,13 +459,13 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
{.Type = ZenContentType::kBinary, .CacheKey = {Ref.BucketSegment, Ref.HashKey}});
}
- return Request.WriteResponse(zen::HttpResponseCode::Created);
+ return Request.WriteResponse(HttpResponseCode::Created);
}
else if (ContentType == HttpContentType::kCbObject)
{
// Validate payload before accessing it
- const zen::CbValidateError ValidationResult =
- zen::ValidateCompactBinary(MemoryView(Body.Data(), Body.Size()), zen::CbValidateMode::All);
+ const CbValidateError ValidationResult =
+ ValidateCompactBinary(MemoryView(Body.Data(), Body.Size()), CbValidateMode::All);
if (ValidationResult != CbValidateError::None)
{
@@ -481,7 +481,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
}
// Extract referenced payload hashes
- zen::CbObjectView Cbo(Body.Data());
+ CbObjectView Cbo(Body.Data());
std::vector<IoHash> References;
std::vector<IoHash> MissingRefs;
@@ -492,7 +492,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
if (!References.empty())
{
- zen::CbObjectWriter Idx;
+ CbObjectWriter Idx;
Idx.BeginArray("references");
for (const IoHash& Hash : References)
@@ -514,7 +514,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
ZEN_DEBUG("PUT - cache record '{}/{}' {}, {}/{} attachments missing",
Ref.BucketSegment,
Ref.HashKey,
- zen::NiceBytes(CacheValue.Value.Size()),
+ NiceBytes(CacheValue.Value.Size()),
MissingRefs.size(),
References.size());
@@ -525,12 +525,12 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
.CacheKey = {Ref.BucketSegment, Ref.HashKey},
.PayloadIds = std::move(References)});
- return Request.WriteResponse(zen::HttpResponseCode::Created);
+ return Request.WriteResponse(HttpResponseCode::Created);
}
else
{
// TODO: Binary attachments?
- zen::CbObjectWriter Response;
+ CbObjectWriter Response;
Response.BeginArray("needs");
for (const IoHash& MissingRef : MissingRefs)
{
@@ -540,7 +540,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
Response.EndArray();
// Return Created | BadRequest?
- return Request.WriteResponse(zen::HttpResponseCode::Created, Response.Save());
+ return Request.WriteResponse(HttpResponseCode::Created, Response.Save());
}
}
else if (ContentType == HttpContentType::kCbPackage)
@@ -631,17 +631,17 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
ZEN_DEBUG("PUT - cache record '{}/{}' {}, {}/{} ({}/{}) new attachments",
Ref.BucketSegment,
Ref.HashKey,
- zen::NiceBytes(TotalPackageBytes),
+ NiceBytes(TotalPackageBytes),
AttachmentResult.NewCount,
AttachmentResult.Count,
- zen::NiceBytes(AttachmentResult.NewBytes),
- zen::NiceBytes(AttachmentResult.Bytes));
+ NiceBytes(AttachmentResult.NewBytes),
+ NiceBytes(AttachmentResult.Bytes));
- return Request.WriteResponse(zen::HttpResponseCode::Created);
+ return Request.WriteResponse(HttpResponseCode::Created);
}
else
{
- return Request.WriteResponse(zen::HttpResponseCode::BadRequest);
+ return Request.WriteResponse(HttpResponseCode::BadRequest);
}
}
break;
@@ -655,7 +655,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
}
void
-HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Request, CacheRef& Ref, CachePolicy Policy)
+HttpStructuredCacheService::HandleCachePayloadRequest(HttpServerRequest& Request, CacheRef& Ref, CachePolicy Policy)
{
// Note: the URL references the uncompressed payload hash - so this maintains the mapping
// from uncompressed CAS identity (aka CID/Content ID) to the stored payload hash
@@ -667,12 +667,12 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
switch (auto Verb = Request.RequestVerb())
{
- using enum zen::HttpVerb;
+ using enum HttpVerb;
case kHead:
case kGet:
{
- zen::IoBuffer Payload = m_CidStore.FindChunkByCid(Ref.PayloadId);
+ IoBuffer Payload = m_CidStore.FindChunkByCid(Ref.PayloadId);
bool InUpstreamCache = false;
if (!Payload && m_UpstreamCache)
@@ -680,11 +680,11 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
if (auto UpstreamResult = m_UpstreamCache->GetCachePayload({{Ref.BucketSegment, Ref.HashKey}, Ref.PayloadId});
UpstreamResult.Success)
{
- if (zen::CompressedBuffer Compressed = zen::CompressedBuffer::FromCompressed(SharedBuffer(UpstreamResult.Value)))
+ if (CompressedBuffer Compressed = CompressedBuffer::FromCompressed(SharedBuffer(UpstreamResult.Value)))
{
Payload = UpstreamResult.Value;
- zen::IoHash ChunkHash = zen::IoHash::HashBuffer(Payload);
- zen::CasStore::InsertResult Result = m_CasStore.InsertChunk(Payload, ChunkHash);
+ IoHash ChunkHash = IoHash::HashBuffer(Payload);
+ CasStore::InsertResult Result = m_CasStore.InsertChunk(Payload, ChunkHash);
InUpstreamCache = true;
m_CidStore.AddCompressedCid(Ref.PayloadId, ChunkHash);
@@ -699,7 +699,7 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
if (!Payload)
{
ZEN_DEBUG("MISS - '{}/{}/{}'", Ref.BucketSegment, Ref.HashKey, Ref.PayloadId);
- return Request.WriteResponse(zen::HttpResponseCode::NotFound);
+ return Request.WriteResponse(HttpResponseCode::NotFound);
}
ZEN_DEBUG("HIT - '{}/{}/{}' {} (type: {}) ({})",
@@ -715,29 +715,29 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
Request.SetSuppressResponseBody();
}
- return Request.WriteResponse(zen::HttpResponseCode::OK, zen::HttpContentType::kBinary, Payload);
+ return Request.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Payload);
}
break;
case kPut:
{
- if (zen::IoBuffer Body = Request.ReadPayload())
+ if (IoBuffer Body = Request.ReadPayload())
{
if (Body.Size() == 0)
{
- return Request.WriteResponse(zen::HttpResponseCode::BadRequest,
+ return Request.WriteResponse(HttpResponseCode::BadRequest,
HttpContentType::kText,
"Empty payload not permitted");
}
- zen::IoHash ChunkHash = zen::IoHash::HashBuffer(Body);
+ IoHash ChunkHash = IoHash::HashBuffer(Body);
- zen::CompressedBuffer Compressed = zen::CompressedBuffer::FromCompressed(SharedBuffer(Body));
+ CompressedBuffer Compressed = CompressedBuffer::FromCompressed(SharedBuffer(Body));
if (!Compressed)
{
// All attachment payloads need to be in compressed buffer format
- return Request.WriteResponse(zen::HttpResponseCode::BadRequest,
+ return Request.WriteResponse(HttpResponseCode::BadRequest,
HttpContentType::kText,
"Attachments must be compressed");
}
@@ -749,7 +749,7 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
return Request.WriteResponse(HttpResponseCode::BadRequest);
}
- zen::CasStore::InsertResult Result = m_CasStore.InsertChunk(Body, ChunkHash);
+ CasStore::InsertResult Result = m_CasStore.InsertChunk(Body, ChunkHash);
m_CidStore.AddCompressedCid(Ref.PayloadId, ChunkHash);
@@ -763,11 +763,11 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
if (Result.New)
{
- return Request.WriteResponse(zen::HttpResponseCode::Created);
+ return Request.WriteResponse(HttpResponseCode::Created);
}
else
{
- return Request.WriteResponse(zen::HttpResponseCode::OK);
+ return Request.WriteResponse(HttpResponseCode::OK);
}
}
}
@@ -783,7 +783,7 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
}
bool
-HttpStructuredCacheService::ValidateKeyUri(zen::HttpServerRequest& Request, CacheRef& OutRef)
+HttpStructuredCacheService::ValidateKeyUri(HttpServerRequest& Request, CacheRef& OutRef)
{
std::string_view Key = Request.RelativeUri();
std::string_view::size_type BucketSplitOffset = Key.find_first_of('/');
@@ -819,14 +819,14 @@ HttpStructuredCacheService::ValidateKeyUri(zen::HttpServerRequest& Request, Cach
PayloadSegment = Key.substr(PayloadSplitOffset + 1);
}
- if (HashSegment.size() != zen::IoHash::StringLength)
+ if (HashSegment.size() != IoHash::StringLength)
{
return false;
}
- if (!PayloadSegment.empty() && PayloadSegment.size() == zen::IoHash::StringLength)
+ if (!PayloadSegment.empty() && PayloadSegment.size() == IoHash::StringLength)
{
- const bool IsOk = zen::ParseHexBytes(PayloadSegment.data(), PayloadSegment.size(), OutRef.PayloadId.Hash);
+ const bool IsOk = ParseHexBytes(PayloadSegment.data(), PayloadSegment.size(), OutRef.PayloadId.Hash);
if (!IsOk)
{
@@ -835,10 +835,10 @@ HttpStructuredCacheService::ValidateKeyUri(zen::HttpServerRequest& Request, Cach
}
else
{
- OutRef.PayloadId = zen::IoHash::Zero;
+ OutRef.PayloadId = IoHash::Zero;
}
- const bool IsOk = zen::ParseHexBytes(HashSegment.data(), HashSegment.size(), OutRef.HashKey.Hash);
+ const bool IsOk = ParseHexBytes(HashSegment.data(), HashSegment.size(), OutRef.HashKey.Hash);
if (!IsOk)
{