diff options
Diffstat (limited to 'zenserver/upstream')
| -rw-r--r-- | zenserver/upstream/upstreamcache.cpp | 16 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamcache.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp index c9ba59780..1a35f7283 100644 --- a/zenserver/upstream/upstreamcache.cpp +++ b/zenserver/upstream/upstreamcache.cpp @@ -1243,6 +1243,22 @@ public: } Status.EndArray(); } + + virtual void WaitForIdle() override + { + UpstreamCacheRecord CacheRecord; + while (m_RunState.IsRunning && m_UpstreamQueue.TryDequeue(CacheRecord)) + { + try + { + ProcessCacheRecord(std::move(CacheRecord)); + } + catch (std::exception& Err) + { + ZEN_ERROR("upload cache record '{}/{}' FAILED, reason '{}'", CacheRecord.Key.Bucket, CacheRecord.Key.Hash, Err.what()); + } + } + } private: void ProcessCacheRecord(UpstreamCacheRecord CacheRecord) diff --git a/zenserver/upstream/upstreamcache.h b/zenserver/upstream/upstreamcache.h index c463c4996..c53374a6e 100644 --- a/zenserver/upstream/upstreamcache.h +++ b/zenserver/upstream/upstreamcache.h @@ -175,6 +175,8 @@ public: virtual EnqueueResult EnqueueUpstream(UpstreamCacheRecord CacheRecord) = 0; virtual void GetStatus(CbObjectWriter& CbO) = 0; + + virtual void WaitForIdle() = 0; }; std::unique_ptr<UpstreamCache> MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore, CidStore& CidStore); |