diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PublicInbox/LEI.pm | 3 | ||||
-rw-r--r-- | lib/PublicInbox/LeiImport.pm | 3 | ||||
-rw-r--r-- | lib/PublicInbox/LeiXSearch.pm | 4 |
3 files changed, 7 insertions, 3 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index f5e42869..834e399f 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -970,6 +970,9 @@ sub dclose { } } close(delete $self->{1}) if $self->{1}; # may reap_compress + if (my $sto = delete $self->{sto}) { + $sto->ipc_do('done'); + } $self->close if $self->{sock}; # PublicInbox::DS::close } diff --git a/lib/PublicInbox/LeiImport.pm b/lib/PublicInbox/LeiImport.pm index c2c98030..23cecd53 100644 --- a/lib/PublicInbox/LeiImport.pm +++ b/lib/PublicInbox/LeiImport.pm @@ -18,7 +18,8 @@ sub import_done_wait { # dwaitpid callback my ($arg, $pid) = @_; my ($imp, $lei) = @$arg; $lei->child_error($?, 'non-fatal errors during import') if $?; - my $ign = $lei->{sto}->ipc_do('done'); # PublicInbox::LeiStore::done + my $sto = delete $lei->{sto}; + my $wait = $sto->ipc_do('done') if $sto; # PublicInbox::LeiStore::done $lei->dclose; } diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index 9a6457d7..d4607e16 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -349,7 +349,7 @@ Error closing $lei->{ovv}->{dst}: $! sub do_post_augment { my ($lei) = @_; - my $l2m = $lei->{l2m} or die 'BUG: unexpected do_post_augment'; + my $l2m = $lei->{l2m} or return; # client disconnected my $err; eval { $l2m->post_augment($lei) }; $err = $@; @@ -368,7 +368,7 @@ sub do_post_augment { sub incr_post_augment { # called whenever an l2m shard finishes augment my ($lei) = @_; - my $l2m = $lei->{l2m} or die 'BUG: unexpected incr_post_augment'; + my $l2m = $lei->{l2m} or return; # client disconnected return if ++$lei->{nr_post_augment} != $l2m->{-wq_nr_workers}; do_post_augment($lei); } |