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.
This commit is contained in:
Aleksandra Martyniuk
2024-07-30 09:31:18 +02:00
parent aa9d5fe3f5
commit 811ca00cec

View File

@@ -117,8 +117,9 @@ future<task_status> task_handler::wait_for_task() {
});
},
[id] (task_manager::virtual_task_ptr task) -> future<task_status> {
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<utils::chunked_vector<task_status>> 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,