diff --git a/be/src/io/cache/block_file_cache.cpp b/be/src/io/cache/block_file_cache.cpp index 2a1987da6a9fec..70a513de660938 100644 --- a/be/src/io/cache/block_file_cache.cpp +++ b/be/src/io/cache/block_file_cache.cpp @@ -2356,9 +2356,13 @@ bool BlockFileCache::try_reserve_during_async_load(size_t size, } void BlockFileCache::clear_need_update_lru_blocks() { - std::vector buffer; - buffer.reserve(1024); - while (_need_update_lru_blocks.try_dequeue_bulk(buffer.data(), buffer.capacity())) { + constexpr size_t kBatchSize = 1024; + std::vector buffer(kBatchSize); + size_t drained = 0; + while ((drained = _need_update_lru_blocks.try_dequeue_bulk(buffer.data(), buffer.size())) > 0) { + for (size_t i = 0; i < drained; ++i) { + buffer[i].reset(); + } } }