On Thu, Dec 14, 2017 at 08:24:50AM +0100, Thomas Lamprecht wrote:
> On 12/13/2017 03:46 PM, Wolfgang Link wrote:
> > ---
> >  PVE/Replication.pm | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/PVE/Replication.pm b/PVE/Replication.pm
> > index dac0994..e69b0c2 100644
> > --- a/PVE/Replication.pm
> > +++ b/PVE/Replication.pm
> > @@ -54,6 +54,13 @@ 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 (keys %{$remote_snapshots->{$volid}}) {
> > +               # There should only be one snapshot which is equals;
> 
> But in theory there can be more? At least it seems so when looking at prepare
> below.
> Patch 3/6 changes prepare() to only deletes replication snapshots if 
> $last_sync
> is set - which contradicts then the comment at the start of the prepare sub
> (please address that with 3/6), so the remote side may return more, which one
> is used then and why?
> Note, I'm not to deep into the replica stack as I wasn't present at most of 
> the
> internal design talks and there seems no general design document available, so
> I may also just miss something :)

So in theory when the process starts there could be 2 snapshots if the
node died after the send/recv but before the cleanup, but the code a
little further up (the prepare calls) should take care of removing the
old snapshots.
Still, a check to make sure and die with an internal error here
shouldn't be harmful as it might catch improperly handled error cases
in the prepare calls...

> 
> > +               if (defined($last_snapshots->{$volid}->{$remote_snap})) {
> > +                   $base_snapshots->{$volid} = $remote_snap;
> > +               }
> > +           }
> >         }
> >     }
> >      }
> > 

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

Reply via email to