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(); }