aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-08-17 22:14:28 +0200
committerStefan Boberg <[email protected]>2021-08-17 22:14:28 +0200
commit5bbca1c180bd40544ba0fee3d699202e81aa9da1 (patch)
treee5bc14180fe1e2e1c637032b371bc8cc30fc5afc /zenserver/cache
parentImplemented support for dropping z$ buckets while online (diff)
downloadzen-5bbca1c180bd40544ba0fee3d699202e81aa9da1.tar.xz
zen-5bbca1c180bd40544ba0fee3d699202e81aa9da1.zip
added 'zen drop' command to drop cache buckets online
also cleaned up the server side implementation a bit
Diffstat (limited to 'zenserver/cache')
-rw-r--r--zenserver/cache/structuredcache.cpp12
-rw-r--r--zenserver/cache/structuredcache.h2
2 files changed, 10 insertions, 4 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index f744ae131..def1adb90 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -92,7 +92,7 @@ HttpStructuredCacheService::HandleRequest(zen::HttpServerRequest& Request)
{
CacheRef Ref;
- if (!ValidateUri(Request, /* out */ Ref))
+ if (!ValidateKeyUri(Request, /* out */ Ref))
{
std::string_view Key = Request.RelativeUri();
@@ -129,14 +129,20 @@ HttpStructuredCacheService::HandleCacheBucketRequest(zen::HttpServerRequest& Req
case kHead:
case kGet:
{
+ // Query stats
}
break;
+
case kDelete:
// Drop bucket
if (m_CacheStore.DropBucket(Bucket))
{
- return Request.WriteResponse(zen::HttpResponse::OK); // invalid URL
+ return Request.WriteResponse(zen::HttpResponse::OK);
+ }
+ else
+ {
+ return Request.WriteResponse(zen::HttpResponse::NotFound);
}
break;
}
@@ -496,7 +502,7 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
}
bool
-HttpStructuredCacheService::ValidateUri(zen::HttpServerRequest& Request, CacheRef& OutRef)
+HttpStructuredCacheService::ValidateKeyUri(zen::HttpServerRequest& Request, CacheRef& OutRef)
{
std::string_view Key = Request.RelativeUri();
std::string_view::size_type BucketSplitOffset = Key.find_first_of('/');
diff --git a/zenserver/cache/structuredcache.h b/zenserver/cache/structuredcache.h
index e9796999b..73b0825dc 100644
--- a/zenserver/cache/structuredcache.h
+++ b/zenserver/cache/structuredcache.h
@@ -64,7 +64,7 @@ private:
IoHash PayloadId;
};
- [[nodiscard]] bool ValidateUri(zen::HttpServerRequest& Request, CacheRef& OutRef);
+ [[nodiscard]] bool ValidateKeyUri(zen::HttpServerRequest& Request, CacheRef& OutRef);
void HandleCacheRecordRequest(zen::HttpServerRequest& Request, CacheRef& Ref);
void HandleCachePayloadRequest(zen::HttpServerRequest& Request, CacheRef& Ref);
void HandleCacheBucketRequest(zen::HttpServerRequest& Request, std::string_view Bucket);