archive_pbs: call backup_cancel only when job is really started

This commit is contained in:
Dietmar Maurer 2020-03-11 07:55:58 +01:00 committed by Thomas Lamprecht
parent d2cc2cbe69
commit f6168f1a6a

View File

@ -421,6 +421,8 @@ sub archive_pbs {
} }
} }
my $backup_job_uuid;
my $interrupt_msg = "interrupted by signal\n"; my $interrupt_msg = "interrupted by signal\n";
eval { eval {
$SIG{INT} = $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{PIPE} = sub { $SIG{INT} = $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = $SIG{PIPE} = sub {
@ -440,8 +442,6 @@ sub archive_pbs {
} }
} }
my $uuid;
eval { eval {
my $params = { my $params = {
@ -456,7 +456,7 @@ sub archive_pbs {
$params->{fingerprint} = $fingerprint if defined($fingerprint); $params->{fingerprint} = $fingerprint if defined($fingerprint);
$params->{'firewall-file'} = $firewall if -e $firewall; $params->{'firewall-file'} = $firewall if -e $firewall;
my $res = mon_cmd($vmid, "backup", %$params); my $res = mon_cmd($vmid, "backup", %$params);
$uuid = $res->{UUID}; $backup_job_uuid = $res->{UUID};
}; };
my $qmperr = $@; my $qmperr = $@;
@ -470,9 +470,9 @@ sub archive_pbs {
die $qmperr if $qmperr; die $qmperr if $qmperr;
die "got no uuid for backup task\n" if !$uuid; die "got no uuid for backup task\n" if !defined($backup_job_uuid);
$self->loginfo("started backup task '$uuid'"); $self->loginfo("started backup task '$backup_job_uuid'");
if ($resume_on_backup) { if ($resume_on_backup) {
if (my $stoptime = $task->{vmstoptime}) { if (my $stoptime = $task->{vmstoptime}) {
@ -485,18 +485,20 @@ sub archive_pbs {
mon_cmd($vmid, 'cont'); mon_cmd($vmid, 'cont');
} }
$query_backup_status_loop->($self, $vmid, $uuid); $query_backup_status_loop->($self, $vmid, $backup_job_uuid);
}; };
my $err = $@; my $err = $@;
if ($err) { if ($err) {
$self->logerr($err); $self->logerr($err);
if (defined($backup_job_uuid)) {
$self->loginfo("aborting backup job"); $self->loginfo("aborting backup job");
eval { mon_cmd($vmid, 'backup-cancel'); }; eval { mon_cmd($vmid, 'backup-cancel'); };
if (my $err1 = $@) { if (my $err1 = $@) {
$self->logerr($err1); $self->logerr($err1);
} }
} }
}
if ($stop_after_backup) { if ($stop_after_backup) {
# stop if not running # stop if not running