diff options
Diffstat (limited to 'zenserver/cache')
| -rw-r--r-- | zenserver/cache/structuredcache.cpp | 11 | ||||
| -rw-r--r-- | zenserver/cache/structuredcache.h | 1 | ||||
| -rw-r--r-- | zenserver/cache/structuredcachestore.cpp | 7 | ||||
| -rw-r--r-- | zenserver/cache/structuredcachestore.h | 1 |
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 |