From 3f47b85e3b0ebd29c76934be3313d91718fe5973 Mon Sep 17 00:00:00 2001 From: Nathan Nichols Date: Sun, 15 May 2022 19:29:05 -0500 Subject: [PATCH] disable cache when CacheLoadStyle::NONE (#152) --- src/backend/SimpleCache.cpp | 13 +++++++++++++ src/backend/SimpleCache.h | 4 ++++ src/etl/ReportingETL.cpp | 1 + 3 files changed, 18 insertions(+) diff --git a/src/backend/SimpleCache.cpp b/src/backend/SimpleCache.cpp index 6defa5bc..01c46572 100644 --- a/src/backend/SimpleCache.cpp +++ b/src/backend/SimpleCache.cpp @@ -1,5 +1,6 @@ #include namespace Backend { + uint32_t SimpleCache::latestLedgerSequence() const { @@ -13,6 +14,9 @@ SimpleCache::update( uint32_t seq, bool isBackground) { + if (disabled_) + return; + { std::unique_lock lck{mtx_}; if (seq > latestSeq_) @@ -82,9 +86,18 @@ SimpleCache::get(ripple::uint256 const& key, uint32_t seq) const return {e->second.blob}; } +void +SimpleCache::setDisabled() +{ + disabled_ = true; +} + void SimpleCache::setFull() { + if (disabled_) + return; + full_ = true; std::unique_lock lck{mtx_}; deletes_.clear(); diff --git a/src/backend/SimpleCache.h b/src/backend/SimpleCache.h index 4cabd0e7..db78d7f8 100644 --- a/src/backend/SimpleCache.h +++ b/src/backend/SimpleCache.h @@ -21,6 +21,7 @@ class SimpleCache mutable std::shared_mutex mtx_; uint32_t latestSeq_ = 0; std::atomic_bool full_ = false; + std::atomic_bool disabled_ = false; // temporary set to prevent background thread from writing already deleted // data. not used when cache is full std::unordered_set> deletes_; @@ -45,6 +46,9 @@ public: std::optional getPredecessor(ripple::uint256 const& key, uint32_t seq) const; + void + setDisabled(); + void setFull(); diff --git a/src/etl/ReportingETL.cpp b/src/etl/ReportingETL.cpp index ab2a04f1..28f4ece2 100644 --- a/src/etl/ReportingETL.cpp +++ b/src/etl/ReportingETL.cpp @@ -894,6 +894,7 @@ ReportingETL::loadCache(uint32_t seq) { if (cacheLoadStyle_ == CacheLoadStyle::NOT_AT_ALL) { + backend_->cache().setDisabled(); BOOST_LOG_TRIVIAL(warning) << "Cache is disabled. Not loading"; return; }