public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [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

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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal