fix cross process task listing
it does not make sense to check if the worker is running if we already have an endtime and state our 'worker_is_active_local' heuristic returns true for non process-local tasks, so we got 'running' for all tasks that were not started by 'our' pid and were still running Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
22231524e2
commit
fae11693f0
@ -270,28 +270,22 @@ fn update_active_workers(new_upid: Option<&UPID>) -> Result<Vec<TaskListInfo>, E
|
||||
let line = line?;
|
||||
match parse_worker_status_line(&line) {
|
||||
Err(err) => bail!("unable to parse active worker status '{}' - {}", line, err),
|
||||
Ok((upid_str, upid, state)) => {
|
||||
|
||||
let running = worker_is_active_local(&upid);
|
||||
|
||||
if running {
|
||||
Ok((upid_str, upid, state)) => match state {
|
||||
None if worker_is_active_local(&upid) => {
|
||||
active_list.push(TaskListInfo { upid, upid_str, state: None });
|
||||
} else {
|
||||
match state {
|
||||
None => {
|
||||
println!("Detected stopped UPID {}", upid_str);
|
||||
let status = upid_read_status(&upid)
|
||||
.unwrap_or_else(|_| String::from("unknown"));
|
||||
finish_list.push(TaskListInfo {
|
||||
upid, upid_str, state: Some((Local::now().timestamp(), status))
|
||||
});
|
||||
}
|
||||
Some((endtime, status)) => {
|
||||
finish_list.push(TaskListInfo {
|
||||
upid, upid_str, state: Some((endtime, status))
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
None => {
|
||||
println!("Detected stopped UPID {}", upid_str);
|
||||
let status = upid_read_status(&upid)
|
||||
.unwrap_or_else(|_| String::from("unknown"));
|
||||
finish_list.push(TaskListInfo {
|
||||
upid, upid_str, state: Some((Local::now().timestamp(), status))
|
||||
});
|
||||
},
|
||||
Some((endtime, status)) => {
|
||||
finish_list.push(TaskListInfo {
|
||||
upid, upid_str, state: Some((endtime, status))
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user