[pdm-devel] [PATCH proxmox-datacenter-manager v7 7/7] remote tasks: log error in case of task panic, instead of cancelling all tasks

Lukas Wagner l.wagner at proxmox.com
Wed Aug 20 14:43:29 CEST 2025


Should hopefully never happen, but for cases like these we still want to
to persist the tasks from other nodes instead of failing completely.

Also remove the `set_node_failure` function for NodeFetchSuccessMap. For
panic'd tasks we don't have a straightforward way to get the node name,
and we only ever check for success any way, not failure.

Suggested-by: Dominik Csapak <d.csapak at proxmox.com>
Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
---

Notes:
    New in v7.

 server/src/bin/proxmox-datacenter-api/tasks/remote_tasks.rs | 5 +++--
 server/src/remote_tasks/task_cache.rs                       | 5 -----
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/server/src/bin/proxmox-datacenter-api/tasks/remote_tasks.rs b/server/src/bin/proxmox-datacenter-api/tasks/remote_tasks.rs
index 4701a935..04c51dac 100644
--- a/server/src/bin/proxmox-datacenter-api/tasks/remote_tasks.rs
+++ b/server/src/bin/proxmox-datacenter-api/tasks/remote_tasks.rs
@@ -411,10 +411,11 @@ async fn fetch_tasks(
                         }
                         Err(error) => {
                             log::error!("could not fetch tasks: {error:#}");
-                            node_results.set_node_failure(remote.id.clone(), node_name);
                         }
                     },
-                    Err(err) => return Err(err.into()),
+                    Err(error) => {
+                        log::error!("could not join task fetching task: {error:#}");
+                    }
                 }
             }
         }
diff --git a/server/src/remote_tasks/task_cache.rs b/server/src/remote_tasks/task_cache.rs
index 1afeaee4..e9e708e4 100644
--- a/server/src/remote_tasks/task_cache.rs
+++ b/server/src/remote_tasks/task_cache.rs
@@ -188,11 +188,6 @@ impl NodeFetchSuccessMap {
         self.0.insert((remote, node), true);
     }
 
-    /// Mark a node of a given remote as failed.
-    pub fn set_node_failure(&mut self, remote: String, node: String) {
-        self.0.insert((remote, node), false);
-    }
-
     /// Returns whether tasks from a given node of a remote were successfully fetched.
     pub fn node_successful(&self, remote: &str, node: &str) -> bool {
         matches!(self.0.get(&(remote.into(), node.into())), Some(true))
-- 
2.47.2





More information about the pdm-devel mailing list