X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiQuery.pm;h=c630d62809a38fa1184cdcb71b7f8cd0e4d87b80;hb=fbc11e24a72f41b0ed7ead30d199288a4d674be4;hp=eaf91f2ec90b02647bc935788dd8aa6ff62a342c;hpb=fb8b16ff2b40ecd22ebbdea0d27069749e800077;p=public-inbox.git diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm index eaf91f2e..c630d628 100644 --- a/lib/PublicInbox/LeiQuery.pm +++ b/lib/PublicInbox/LeiQuery.pm @@ -5,6 +5,7 @@ package PublicInbox::LeiQuery; use strict; use v5.10.1; +use POSIX (); sub prep_ext { # externals_each callback my ($lxs, $exclude, $loc) = @_; @@ -13,14 +14,11 @@ sub prep_ext { # externals_each callback sub _start_query { my ($self) = @_; - if (my $nwr = $self->{nwr}) { + if ($self->{net}) { require PublicInbox::LeiAuth; - my $auth = $self->{auth} = PublicInbox::LeiAuth->new($nwr); - my $lxs = $self->{lxs}; - $auth->auth_start($self, $lxs->can('do_query'), $lxs, $self); - } else { - $self->{lxs}->do_query($self); + $self->{auth} = PublicInbox::LeiAuth->new } + $self->{lxs}->do_query($self); } sub qstr_add { # PublicInbox::InputPipe::consume callback for --stdin @@ -53,6 +51,10 @@ sub lei_q { # we'll allow "--only $LOCATION --local" my $sto = $self->_lei_store(1); my $lse = $sto->search; + if (($opt->{'import-remote'} //= 1) | + ($opt->{'import-augment'} //= 1)) { + $sto->write_prepare($self); + } if ($opt->{'local'} //= scalar(@only) ? 0 : 1) { $lxs->prepare_external($lse); } @@ -90,14 +92,17 @@ sub lei_q { return $self->fail("`$xj' search jobs must be >= 1"); } $xj ||= $lxs->concurrency($opt); # allow: "--jobs ,$WRITER_ONLY" - my $nproc = $lxs->detect_nproc; # don't memoize, schedtool(1) exists + my $nproc = $lxs->detect_nproc // 1; # don't memoize, schedtool(1) exists $xj = $nproc if $xj > $nproc; - $lxs->{jobs} = $xj; + $lxs->{-wq_nr_workers} = $xj; if (defined($mj) && $mj !~ /\A[1-9][0-9]*\z/) { return $self->fail("`$mj' writer jobs must be >= 1"); } - $self->{l2m}->{jobs} = ($mj // $nproc) if $self->{l2m}; PublicInbox::LeiOverview->new($self) or return; + $self->{l2m} and $self->{l2m}->{-wq_nr_workers} = $mj // do { + $mj = POSIX::lround($nproc * 3 / 4); # keep some CPU for git + $mj <= 0 ? 1 : $mj; + }; my %mset_opt = map { $_ => $opt->{$_} } qw(threads limit offset); $mset_opt{asc} = $opt->{'reverse'} ? 1 : 0;