From 811ca00cec9c976a3c2d54bb2d35c47af8795df4 Mon Sep 17 00:00:00 2001 From: Aleksandra Martyniuk Date: Tue, 30 Jul 2024 09:31:18 +0200 Subject: [PATCH] tasks: fix task handler There are some bugs missed in task handler: - wait_for_task does not wait until virtual tasks are done, but returns the status immediately; - wait_for_task suffers from use after return; - get_status_recursively does not set the kind of task essentials. Fix the aforementioned. --- tasks/task_handler.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasks/task_handler.cc b/tasks/task_handler.cc index 62e7155703..c2af58c747 100644 --- a/tasks/task_handler.cc +++ b/tasks/task_handler.cc @@ -117,8 +117,9 @@ future task_handler::wait_for_task() { }); }, [id] (task_manager::virtual_task_ptr task) -> future { - auto status = co_await task->get_status(id); - co_return get_virtual_task_info(id, status); + auto id_ = id; + auto status = co_await task->wait(id_); + co_return get_virtual_task_info(id_, status); } }, task_v); })); @@ -165,6 +166,7 @@ future> task_handler::get_status_recursively( auto status = task_status{ .task_id = task.task_status.id, .type = task.type, + .kind = task_kind::node, .scope = task.task_status.scope, .state = task.task_status.state, .is_abortable = task.abortable,