about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiQuery.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/LeiQuery.pm')
-rw-r--r--lib/PublicInbox/LeiQuery.pm7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm
index d5376be5..9a383cef 100644
--- a/lib/PublicInbox/LeiQuery.pm
+++ b/lib/PublicInbox/LeiQuery.pm
@@ -66,7 +66,7 @@ sub lei_q {
 
         # --local is enabled by default
         # src: LeiXSearch || LeiSearch || Inbox
-        my @srcs = $opt->{'local'} ? ($sto->search) : ();
+        my @srcs;
         require PublicInbox::LeiXSearch;
         my $lxs = PublicInbox::LeiXSearch->new;
 
@@ -74,12 +74,15 @@ sub lei_q {
         if ($opt->{external} // 1) {
                 $self->_externals_each(\&_vivify_external, \@srcs);
         }
-        my $j = $opt->{jobs} // scalar(@srcs) > 4 ? 4 : scalar(@srcs);
+        my $j = $opt->{jobs} // scalar(@srcs) > 3 ? 3 : scalar(@srcs);
         $j = 1 if !$opt->{thread};
+        $j++ if $opt->{'local'}; # for sto->search below
         if ($self->{sock}) {
+                $self->atfork_prepare_wq($lxs);
                 $lxs->wq_workers_start('lei_xsearch', $j, $self->oldset)
                         // $self->wq_workers($j);
         }
+        unshift(@srcs, $sto->search) if $opt->{'local'};
         my $out = $opt->{output} // '-';
         $out = 'json:/dev/stdout' if $out eq '-';
         my $isatty = -t $self->{1};