From 3832f1d2706453ceaafcd74bd2209c389a4f39f1 Mon Sep 17 00:00:00 2001 From: Zhengchao An Date: Sun, 12 Jul 2026 09:46:13 +0800 Subject: [PATCH] fix(cache): drain pending removals during clear (#4759) --- crates/object-data-cache/src/moka_backend.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) }