From 97d04fa82274c8fcb30d8f6d78d96300ade5f7c2 Mon Sep 17 00:00:00 2001 From: zhengyu Date: Tue, 4 Mar 2025 17:08:23 +0800 Subject: [PATCH] [fix](cloud) fix filecache warmup crash due to spurious wakeup Signed-off-by: zhengyu --- be/src/cloud/cloud_warm_up_manager.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/be/src/cloud/cloud_warm_up_manager.cpp b/be/src/cloud/cloud_warm_up_manager.cpp index 06d6df11dc4cc3..58b5711d997b4a 100644 --- a/be/src/cloud/cloud_warm_up_manager.cpp +++ b/be/src/cloud/cloud_warm_up_manager.cpp @@ -66,10 +66,17 @@ void CloudWarmUpManager::handle_jobs() { std::shared_ptr cur_job = nullptr; { std::unique_lock lock(_mtx); - _cond.wait(lock, [this]() { return _closed || !_pending_job_metas.empty(); }); + while (!_closed && _pending_job_metas.empty()) { + _cond.wait(lock); + } if (_closed) break; cur_job = _pending_job_metas.front(); } + + if (!cur_job) { + LOG_WARNING("Warm up job is null"); + continue; + } for (int64_t tablet_id : cur_job->tablet_ids) { if (_cur_job_id == 0) { // The job is canceled break;