From 3af2d22e29a4abbc9539fd031fcda71dfb39c39d Mon Sep 17 00:00:00 2001 From: zhengyu Date: Thu, 28 Aug 2025 17:55:58 +0800 Subject: [PATCH] [enhancement](filecache) parallel clear cache between multiple cache instance (#55259) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …instance cache instance are indepandent. clear cache can be execute concurrently to speed up the clear process. Signed-off-by: zhengyu --- be/src/io/cache/block_file_cache_factory.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/be/src/io/cache/block_file_cache_factory.cpp b/be/src/io/cache/block_file_cache_factory.cpp index d43e3acea14daf..1d29196c240e4f 100644 --- a/be/src/io/cache/block_file_cache_factory.cpp +++ b/be/src/io/cache/block_file_cache_factory.cpp @@ -31,6 +31,7 @@ #endif #include +#include #include #include @@ -156,9 +157,17 @@ FileCacheFactory::get_query_context_holders(const TUniqueId& query_id) { } std::string FileCacheFactory::clear_file_caches(bool sync) { + std::vector results(_caches.size()); + + std::for_each(std::execution::par, _caches.begin(), _caches.end(), [&](const auto& cache) { + size_t index = &cache - &_caches[0]; + results[index] = + sync ? cache->clear_file_cache_directly() : cache->clear_file_cache_async(); + }); + std::stringstream ss; - for (const auto& cache : _caches) { - ss << (sync ? cache->clear_file_cache_directly() : cache->clear_file_cache_async()) << "\n"; + for (const auto& result : results) { + ss << result << "\n"; } return ss.str(); }