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 ]);
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) = @_;
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;