diff --git a/be/src/pipeline/task_scheduler.cpp b/be/src/pipeline/task_scheduler.cpp index 475d3a8065f8b4..1fb3fbb3c36865 100644 --- a/be/src/pipeline/task_scheduler.cpp +++ b/be/src/pipeline/task_scheduler.cpp @@ -76,10 +76,6 @@ void _close_task(PipelineTask* task, Status exec_status) { // Should count the memory to the query or the query's memory will not decrease when part of // task finished. SCOPED_ATTACH_TASK(task->runtime_state()); - if (task->is_finalized()) { - task->set_running(false); - return; - } // close_a_pipeline may delete fragment context and will core in some defer // code, because the defer code will access fragment context it self. auto lock_for_context = task->fragment_context()->shared_from_this(); @@ -107,6 +103,9 @@ void TaskScheduler::_do_work(size_t index) { static_cast(_task_queue->push_back(task, index)); continue; } + if (task->is_finalized()) { + continue; + } task->log_detail_if_need(); task->set_running(true); task->set_task_queue(_task_queue.get());