about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/LEI.pm3
-rw-r--r--lib/PublicInbox/LeiImport.pm3
-rw-r--r--lib/PublicInbox/LeiXSearch.pm4
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);
 }