With this patch we can restore the state of a state less job.
It may happen that there are more replication snapshots,
because no job state is known can not delete any snapshot.
Existing multiple replication-snapshot happens
when a node fails in middel of a replication
and then the VM is moved to another node.
That's why we have to test if we have a common base on both nodes.
Given this, we take this as a replica state.
After we have a state again, the rest of the snapshots can be deleted on the 
next run.
---
 PVE/Replication.pm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/PVE/Replication.pm b/PVE/Replication.pm
index 5f82dda..4c49c14 100644
--- a/PVE/Replication.pm
+++ b/PVE/Replication.pm
@@ -54,6 +54,16 @@ sub find_common_replication_snapshot {
                     ($last_snapshots->{$volid}->{$parent_snapname} &&
                      $remote_snapshots->{$volid}->{$parent_snapname})) {
                $base_snapshots->{$volid} = $parent_snapname;
+           } elsif ($last_sync == 0) {
+               foreach my $remote_snap (sort {$b cmp $a} keys 
%{$remote_snapshots->{$volid}}) {
+                   if (defined($last_snapshots->{$volid}->{$remote_snap})) {
+                       $base_snapshots->{$volid} = $remote_snap;
+                       last;
+                   }
+               }
+               die "No common base to restore the job state\n".
+                   "please delete jobid: $jobid and create the job again\n"
+                   if !defined($base_snapshots->{$volid});
            }
        }
     }
-- 
2.11.0


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to