From 995a3921d9ee55333fcd2693f5b6cefb7f581033 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Wed, 4 Dec 2019 21:46:25 +0100 Subject: [PATCH] When failing to create a snapshot, restart stopped services before dying --- zmbh/zmbh.pl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/zmbh/zmbh.pl b/zmbh/zmbh.pl index 61c3d17..ce8bd92 100644 --- a/zmbh/zmbh.pl +++ b/zmbh/zmbh.pl @@ -59,6 +59,9 @@ if ( $can_snapshot ) { } if ( $opt->{pre} ) { + + my $failure = 0; + if ($opt->{shutdown} =~ m/^no(ne)?/){ log_info("Not shutting down any service"); } elsif ($opt->{shutdown} eq 'ldap' and -e '/opt/zimbra/bin/ldap'){ @@ -91,11 +94,13 @@ if ( $opt->{pre} ) { # Take the snapshot if ( system( "lvcreate $snap_args $dev") != 0 ) { - die "Failed to create snapshot\n"; + log_info("Failed to create snapshot"); + # Record the failure but don't die now, we need to restart services + $failure = 1; + } else { + log_info("snapshot created as $dev" . '_bkp'); } - log_info("snapshot created as $dev" . '_bkp'); - # Restart Zimbra now to minimize down time if ($opt->{shutdown} =~ m/^no(ne)?/){ log_info("No service were shutted down"); @@ -124,6 +129,10 @@ if ( $opt->{pre} ) { system('systemctl start zimbra'); } + if ($failure){ + die "Stoping backup process now, as snapshot failed\n"; + } + # Now mount the snapshot RO my $mount_args = "-o ro -t $fs"; if ( $fs eq 'xfs' ) {