[pve-devel] [PATCH rrd-migration-tool 2/2] migrate nodes: fix handling nonexistent nodes

Fiona Ebner f.ebner at proxmox.com
Fri Aug 1 15:54:29 CEST 2025


Use the same expression as in the OK(()) branch after the
do_rrd_migration() call. Previously, the presence of a nonexistent
node would lead to a failure:

> Error migrating nodes: Not a directory (os error 20)

That is because the path would have a duplicate node name attached,
for example:
> /var/lib/rrdcached/db/pve2-node/nonexistent/nonexistent

Fixing that alone is not enough, there also was a 'continue' missing
to avoid calling do_rrd_migration() with the old node, i.e. to
actually skip it.

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
 src/main.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main.rs b/src/main.rs
index fb58d3a..9afd48b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -528,10 +528,11 @@ fn migrate_nodes(
         if !resource_present(format!("{resources}/.members").as_str(), node.as_str())? {
             if migrate {
                 println!("Node: '{node}' not present. Skip and mark as old.");
-                mv_old(format!("{}/{node}", file.0.to_string_lossy()).as_str())?;
+                mv_old(full_path.as_str())?;
             } else {
                 println!("Node: '{node}' not present. Would mark as old, but in dry-run mode, so just skip.");
             }
+            continue;
         }
         match do_rrd_migration(
             file,
-- 
2.47.2





More information about the pve-devel mailing list