about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiImport.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-02-07 08:51:54 +0000
committerEric Wong <e@80x24.org>2021-02-07 22:57:11 +0000
commit0727032b33a7dc3b5ac4c63e267a12df244ea650 (patch)
tree566d3615c4f5e3380a9b6e4e74383e320b144bf2 /lib/PublicInbox/LeiImport.pm
parent757652fd1ad6843c984610263a2a0b336c974111 (diff)
downloadpublic-inbox-0727032b33a7dc3b5ac4c63e267a12df244ea650.tar.gz
We're able to propagate $? from wq_workers in a consistent
manner, now.
Diffstat (limited to 'lib/PublicInbox/LeiImport.pm')
-rw-r--r--lib/PublicInbox/LeiImport.pm14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/PublicInbox/LeiImport.pm b/lib/PublicInbox/LeiImport.pm
index 3a99570e..2b2dc2f7 100644
--- a/lib/PublicInbox/LeiImport.pm
+++ b/lib/PublicInbox/LeiImport.pm
@@ -14,12 +14,18 @@ sub _import_eml { # MboxReader callback
         $sto->ipc_do('set_eml', $eml, $set_kw ? $sto->mbox_keywords($eml) : ());
 }
 
+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
+        $lei->dclose;
+}
+
 sub import_done { # EOF callback for main daemon
         my ($lei) = @_;
-        my $imp = delete $lei->{imp};
-        $imp->wq_wait_old($lei) if $imp;
-        my $wait = $lei->{sto}->ipc_do('done');
-        $lei->dclose;
+        my $imp = delete $lei->{imp} or return;
+        $imp->wq_wait_old(\&import_done_wait, $lei);
 }
 
 sub call { # the main "lei import" method