diff --git a/crates/object-data-cache/src/moka_backend.rs b/crates/object-data-cache/src/moka_backend.rs index 79a44d82c..a44737f42 100644 --- a/crates/object-data-cache/src/moka_backend.rs +++ b/crates/object-data-cache/src/moka_backend.rs @@ -330,8 +330,15 @@ impl MokaBackend { /// index). Rare admin `clear()` path only. pub async fn clear(&self) -> ObjectDataCacheInvalidationResult { let removed = self.index.remove_matching(|_| true).await.len(); - self.cache.invalidate_all(); self.cache.run_pending_tasks().await; + self.cache.invalidate_all(); + for _ in 0..8 { + self.cache.run_pending_tasks().await; + if self.cache.entry_count() == 0 { + break; + } + tokio::task::yield_now().await; + } Self::invalidation_result(removed) }