* [pve-devel] [PATCH v2 guest-common] replication: avoid "expected snapshot missing" warning when irrelevant
@ 2022-09-23 8:16 Fiona Ebner
2022-09-26 9:27 ` [pve-devel] applied: " Thomas Lamprecht
0 siblings, 1 reply; 2+ messages in thread
From: Fiona Ebner @ 2022-09-23 8:16 UTC (permalink / raw)
To: pve-devel
Only print it when there is a snapshot that would've been removed
without the safeguard. Mostly relevant when a new volume is added to
an already replicated guest.
Fixes replication tests in pve-manager.
Fixes: c0b2948 ("replication: prepare: safeguard against removal if expected snapshot is missing")
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
Changes from v1:
* Only warn when other snapshot would be removed without the
safeguard, not just when no other snapshot is present.
src/PVE/Replication.pm | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/PVE/Replication.pm b/src/PVE/Replication.pm
index 8591d0e..469ca19 100644
--- a/src/PVE/Replication.pm
+++ b/src/PVE/Replication.pm
@@ -177,16 +177,21 @@ sub prepare {
my $removal_ok = !defined($snapname) || $info->{$snapname};
$removal_ok = 0 if $last_sync == 0; # last_sync=0 if the VM was stolen, don't remove!
$removal_ok = 1 if $last_sync == 1; # last_sync=1 is a special value used to remove all
+
+ # check if it's a replication snapshot with the same $prefix but not the $last_sync one
+ my $potentially_stale = sub {
+ my ($snap) = @_;
+
+ return 0 if defined($snapname) && $snap eq $snapname;
+ return 0 if defined($parent_snapname) && $snap eq $parent_snapname;
+ return $snap =~ m/^\Q$prefix\E/;
+ };
+
$logfunc->("expected snapshot $snapname not present for $volid, not removing others")
- if !$removal_ok && $last_sync > 1;
+ if !$removal_ok && $last_sync > 1 && grep { $potentially_stale->($_) } keys $info->%*;
for my $snap (keys $info->%*) {
- if ( # check if it's a stale replication snapshot
- !(defined($snapname) && $snap eq $snapname) &&
- !(defined($parent_snapname) && $snap eq $parent_snapname) &&
- $snap =~ m/^\Q$prefix\E/ &&
- $removal_ok
- ) {
+ if ($potentially_stale->($snap) && $removal_ok) {
$logfunc->("delete stale replication snapshot '$snap' on $volid");
eval {
PVE::Storage::volume_snapshot_delete($storecfg, $volid, $snap);
--
2.30.2
^ permalink raw reply [flat|nested] 2+ messages in thread
* [pve-devel] applied: Re: [PATCH v2 guest-common] replication: avoid "expected snapshot missing" warning when irrelevant
2022-09-23 8:16 [pve-devel] [PATCH v2 guest-common] replication: avoid "expected snapshot missing" warning when irrelevant Fiona Ebner
@ 2022-09-26 9:27 ` Thomas Lamprecht
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Lamprecht @ 2022-09-26 9:27 UTC (permalink / raw)
To: Proxmox VE development discussion, Fiona Ebner
On 23/09/2022 10:16, Fiona Ebner wrote:
> Only print it when there is a snapshot that would've been removed
> without the safeguard. Mostly relevant when a new volume is added to
> an already replicated guest.
>
> Fixes replication tests in pve-manager.
>
> Fixes: c0b2948 ("replication: prepare: safeguard against removal if expected snapshot is missing")
> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
>
> Changes from v1:
> * Only warn when other snapshot would be removed without the
> safeguard, not just when no other snapshot is present.
>
> src/PVE/Replication.pm | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
>
applied, thanks!
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-09-26 9:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-23 8:16 [pve-devel] [PATCH v2 guest-common] replication: avoid "expected snapshot missing" warning when irrelevant Fiona Ebner
2022-09-26 9:27 ` [pve-devel] applied: " Thomas Lamprecht
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox