diff options
author | Eric Wong <e@80x24.org> | 2021-08-14 00:29:43 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-08-14 05:57:47 +0000 |
commit | 7d576adffbbd61f04278937d882d7ffde570cecd (patch) | |
tree | 5bc3ed5d6ae1b1b59cda64153dfd2b20c7f868ca /lib/PublicInbox/LeiXSearch.pm | |
parent | c7bcfe6cd6648ff015dcf29155c0c9c40e4f2b00 (diff) | |
download | public-inbox-7d576adffbbd61f04278937d882d7ffde570cecd.tar.gz |
lei <q|up>: wait on remote mboxrd imports synchronously
This ought to avoid /Document \d+ not found/ errors from Xapian when seeing a message for the first time by not attempting to read keywords for totally unseen messages.
Diffstat (limited to 'lib/PublicInbox/LeiXSearch.pm')
-rw-r--r-- | lib/PublicInbox/LeiXSearch.pm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index 393f25bf..971f3a06 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -266,11 +266,15 @@ sub _smsg_fill ($$) { sub each_remote_eml { # callback for MboxReader->mboxrd my ($eml, $self, $lei, $each_smsg) = @_; my $xoids = $lei->{ale}->xoids_for($eml, 1); + my $smsg = bless {}, 'PublicInbox::Smsg'; if ($self->{import_sto} && !$xoids) { - $self->{import_sto}->ipc_do('add_eml', $eml); + my $res = $self->{import_sto}->ipc_do('add_eml', $eml); + if (ref($res) eq ref($smsg)) { # totally new message + $smsg = $res; + $smsg->{kw} = []; # short-circuit xsmsg_vmd + } } - my $smsg = bless {}, 'PublicInbox::Smsg'; - $smsg->{blob} = $xoids ? (keys(%$xoids))[0] + $smsg->{blob} //= $xoids ? (keys(%$xoids))[0] : git_sha(1, $eml)->hexdigest; _smsg_fill($smsg, $eml); wait_startq($lei); |