diff --git a/crates/rpc/rpc-eth-types/src/cache/multi_consumer.rs b/crates/rpc/rpc-eth-types/src/cache/multi_consumer.rs index 2f5a46125a..bae39c78f0 100644 --- a/crates/rpc/rpc-eth-types/src/cache/multi_consumer.rs +++ b/crates/rpc/rpc-eth-types/src/cache/multi_consumer.rs @@ -99,6 +99,14 @@ where V: InMemorySize, { let size = value.size(); + + if self.cache.limiter().is_over_the_limit(self.cache.len() + 1) { + if let Some((_, evicted)) = self.cache.pop_oldest() { + // update tracked memory with the evicted value + self.memory_usage = self.memory_usage.saturating_sub(evicted.size()); + } + } + if self.cache.insert(key, value) { self.memory_usage = self.memory_usage.saturating_add(size); true