From 164c225670d2ee8d82c8c73e307a78489529e64a Mon Sep 17 00:00:00 2001 From: Valentin Balaschenko <13349202+vlntb@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:00:49 +0100 Subject: [PATCH] improve cleanup --- src/xrpld/core/detail/LRUMap.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/xrpld/core/detail/LRUMap.h b/src/xrpld/core/detail/LRUMap.h index 45e9a6b028..da731ca910 100644 --- a/src/xrpld/core/detail/LRUMap.h +++ b/src/xrpld/core/detail/LRUMap.h @@ -44,12 +44,18 @@ public: bump_to_front(key); return it->second; } + if (data_.size() >= capacity_) { - Key const& lru = usage_list_.back(); - usage_list_.pop_back(); - data_.erase(lru); + std::size_t excess = (data_.size() + 1) - capacity_; + for (std::size_t i = 0; i < excess; ++i) + { + Key const& lru = usage_list_.back(); + usage_list_.pop_back(); + data_.erase(lru); + } } + usage_list_.push_front(key); return data_[key]; }