From fae11693f0932c1e4f3a0eeeb508e667a6900bb1 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 9 Jul 2020 15:05:11 +0200 Subject: [PATCH] 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 --- src/server/worker_task.rs | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/server/worker_task.rs b/src/server/worker_task.rs index 72c594e6..af6686fd 100644 --- a/src/server/worker_task.rs +++ b/src/server/worker_task.rs @@ -270,28 +270,22 @@ fn update_active_workers(new_upid: Option<&UPID>) -> Result, 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)) + }) } } }