# --external is enabled by default, but allow --no-external
if ($opt->{external} //= 1) {
my $cb = $lxs->can('prepare_external');
- $self->_externals_each($cb, $lxs);
+ my $ne = $self->_externals_each($cb, $lxs);
+ $opt->{remote} //= $ne == $lxs->remotes;
+ if ($opt->{'local'}) {
+ delete($lxs->{remotes}) if !$opt->{remote};
+ } else {
+ delete($lxs->{locals});
+ }
+ }
+ unless ($lxs->locals || $lxs->remotes) {
+ return $self->fail('no local or remote inboxes to search');
}
- my $xj = $opt->{thread} ? $lxs->locals : ($lxs->remotes + 1);
+ my $xj = $lxs->concurrency($opt);
my $ovv = PublicInbox::LeiOverview->new($self) or return;
$self->atfork_prepare_wq($lxs);
$lxs->wq_workers_start('lei_xsearch', $xj, $self->oldset);