aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-21 14:17:23 +0200
committerStefan Boberg <[email protected]>2021-09-21 14:17:23 +0200
commitc35c36bf81cae52dacf8e3f8dc858bb376ca424b (patch)
tree891475f41d4c8be86cbb3f2bd6c269f596ff668d /zenserver/cache
parentRemoved scrubbing from CasImpl::Initialize since this is triggered by higher ... (diff)
downloadzen-c35c36bf81cae52dacf8e3f8dc858bb376ca424b.tar.xz
zen-c35c36bf81cae52dacf8e3f8dc858bb376ca424b.zip
Wired up scrubbing to more higher level services
Also moved sharding logic for filecas into a function to redduce cut/pasta
Diffstat (limited to 'zenserver/cache')
-rw-r--r--zenserver/cache/structuredcache.cpp11
-rw-r--r--zenserver/cache/structuredcache.h1
-rw-r--r--zenserver/cache/structuredcachestore.cpp7
-rw-r--r--zenserver/cache/structuredcachestore.h1
4 files changed, 19 insertions, 1 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index 7f1fe7b44..533fea498 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -176,7 +176,16 @@ HttpStructuredCacheService::Flush()
void
HttpStructuredCacheService::Scrub(ScrubContext& Ctx)
{
- ZEN_UNUSED(Ctx);
+ if (m_LastScrubTime == Ctx.ScrubTimestamp())
+ {
+ return;
+ }
+
+ m_LastScrubTime = Ctx.ScrubTimestamp();
+
+ m_CasStore.Scrub(Ctx);
+ m_CidStore.Scrub(Ctx);
+ m_CacheStore.Scrub(Ctx);
}
void
diff --git a/zenserver/cache/structuredcache.h b/zenserver/cache/structuredcache.h
index bd163dd1d..c673ea1f5 100644
--- a/zenserver/cache/structuredcache.h
+++ b/zenserver/cache/structuredcache.h
@@ -81,6 +81,7 @@ private:
zen::CasStore& m_CasStore;
zen::CidStore& m_CidStore;
std::unique_ptr<UpstreamCache> m_UpstreamCache;
+ uint64_t m_LastScrubTime = 0;
};
} // namespace zen
diff --git a/zenserver/cache/structuredcachestore.cpp b/zenserver/cache/structuredcachestore.cpp
index 502ca6605..3d80bb14c 100644
--- a/zenserver/cache/structuredcachestore.cpp
+++ b/zenserver/cache/structuredcachestore.cpp
@@ -108,6 +108,13 @@ ZenCacheStore::Flush()
void
ZenCacheStore::Scrub(ScrubContext& Ctx)
{
+ if (m_LastScrubTime == Ctx.ScrubTimestamp())
+ {
+ return;
+ }
+
+ m_LastScrubTime = Ctx.ScrubTimestamp();
+
m_DiskLayer.Scrub(Ctx);
m_MemLayer.Scrub(Ctx);
}
diff --git a/zenserver/cache/structuredcachestore.h b/zenserver/cache/structuredcachestore.h
index fdf4a8cfe..2cc3abb53 100644
--- a/zenserver/cache/structuredcachestore.h
+++ b/zenserver/cache/structuredcachestore.h
@@ -112,6 +112,7 @@ private:
ZenCacheMemoryLayer m_MemLayer;
ZenCacheDiskLayer m_DiskLayer;
uint64_t m_DiskLayerSizeThreshold = 4 * 1024;
+ uint64_t m_LastScrubTime = 0;
};
/** Tracks cache entry access, stats and orchestrates cleanup activities