X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=perl%2FAmanda%2FChanger%2Frait.pm;h=26486bc495ce99d5e9c0a92feccb55cf8e2b8e75;hb=b221e8dc16f345f8c8d7df8df71f4d36daaabb4c;hp=6561f058c0c9485f211c237ff2923a34d9ab6fe2;hpb=d5853102f67d85d8e169f9dbe973ad573306c215;p=debian%2Famanda diff --git a/perl/Amanda/Changer/rait.pm b/perl/Amanda/Changer/rait.pm index 6561f05..26486bc 100644 --- a/perl/Amanda/Changer/rait.pm +++ b/perl/Amanda/Changer/rait.pm @@ -64,8 +64,12 @@ sub new { my @annotated_errs; for my $i (0 .. @children-1) { next unless $children[$i]->isa("Amanda::Changer::Error"); - push @annotated_errs, - [ $kidspecs[$i], $children[$i] ]; + if ($children[$i]->isa("Amanda::Changer::Error")) { + push @annotated_errs, + [ $kidspecs[$i], $children[$i] ]; + } elsif ($children[$i]->isa("Amanda::Changer")) { + $children[$i]->quit(); + } } return Amanda::Changer->make_combined_error( "fatal", [ @annotated_errs ]); @@ -81,6 +85,17 @@ sub new { return $self; } +sub quit { + my $self = shift; + + # quit each child + foreach my $child (@{$self->{'children'}}) { + $child->quit() if $child ne "ERROR"; + } + + $self->SUPER::quit(); +} + # private method to help handle slot input sub _kid_slots_ok { my ($self, $res_cb, $slot, $kid_slots_ref, $err_ref) = @_; @@ -304,6 +319,7 @@ sub info_key { next unless exists($kid_info{'num_slots'}); my $kid_num_slots = $kid_info{'num_slots'}; if (defined $num_slots and $num_slots != $kid_num_slots) { + debug("chg-rait: children have different slot counts!"); $num_slots = -1; } else { $num_slots = $kid_num_slots;