- my $im = delete $self->{im};
- $im->done if $im; # PublicInbox::Import::done
- checkpoint($self);
- my $mm = delete $self->{mm};
- $mm->{dbh}->commit if $mm;
+ my $err = '';
+ if (my $im = delete $self->{im}) {
+ eval { $im->done }; # PublicInbox::Import::done
+ $err .= "import done: $@\n" if $@;
+ }
+ if (!$err) {
+ eval { checkpoint($self) };
+ $err .= "checkpoint: $@\n" if $@;
+ }
+ if (my $mm = delete $self->{mm}) {
+ my $m = $err ? 'rollback' : 'commit';
+ eval { $mm->{dbh}->$m };
+ $err .= "msgmap $m: $@\n" if $@;
+ }