]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LEI.pm
www: make coderepo URL generation more consistent
[public-inbox.git] / lib / PublicInbox / LEI.pm
index 89aa4119aef22f4868f9f738a0e7e516b3c42119..b78d70de95f4e1ef7d616fd33d55f58d62e43d0c 100644 (file)
@@ -253,6 +253,8 @@ our %CMD = ( # sorted in order of importance/use:
 'forget-watch' => [ '{WATCH_NUMBER|--prune}', 'stop and forget a watch',
        qw(prune), @c_opt ],
 
+'reindex' => [ '', 'reindex all locally-indexed messages', @c_opt ],
+
 'index' => [ 'LOCATION...', 'one-time index from URL or filesystem',
        qw(in-format|F=s kw! offset=i recursive|r exclude=s include|I=s
        verbose|v+ incremental!), @net_opt, # mainly for --proxy=
@@ -397,8 +399,10 @@ my %OPTDESC = (
                'include specified external(s) in search' ],
 'only|O=s@     q' => [ 'LOCATION',
                'only use specified external(s) for search' ],
-'jobs=s        q' => [ '[SEARCH_JOBS][,WRITER_JOBS]',
-               'control number of search and writer jobs' ],
+'jobs|j=s' => [ 'JOBSPEC',
+               'control number of query and writer jobs' .
+               "integers delimited by `,', either of which may be omitted"
+               ],
 'jobs|j=i      add-external' => 'set parallelism when indexing after --mirror',
 
 'in-format|F=s' => $stdin_formats,
@@ -540,12 +544,11 @@ sub child_error { # passes non-fatal curl exit codes to user
        local $current_lei = $self;
        $child_error ||= 1 << 8;
        warn(substr($msg, -1, 1) eq "\n" ? $msg : "$msg\n") if defined $msg;
+       $self->{child_error} ||= $child_error;
        if ($self->{pkt_op_p}) { # to top lei-daemon
                $self->{pkt_op_p}->pkt_do('child_error', $child_error);
        } elsif ($self->{sock}) { # to lei(1) client
                send($self->{sock}, "child_error $child_error", MSG_EOR);
-       } else { # non-lei admin command
-               $self->{child_error} ||= $child_error;
        } # else noop if client disconnected
 }
 
@@ -783,7 +786,7 @@ EOM
        }
 }
 
-sub lazy_cb ($$$) {
+sub lazy_cb ($$$) { # $pfx is _complete_ or lei_
        my ($self, $cmd, $pfx) = @_;
        my $ucmd = $cmd;
        $ucmd =~ tr/-/_/;
@@ -1394,7 +1397,7 @@ sub wq_done_wait { # dwaitpid callback
        local $current_lei = $lei;
        my $err_type = $lei->{-err_type};
        $? and $lei->child_error($?,
-                       $err_type ? "$err_type errors during $lei->{cmd}" : ());
+               $err_type ? "$err_type errors during $lei->{cmd} \$?=$?" : ());
        $lei->dclose;
 }
 
@@ -1520,13 +1523,10 @@ sub sto_done_request {
        return unless $lei->{sto};
        local $current_lei = $lei;
        my $sock = $wq ? $wq->{lei_sock} : undef;
-       eval {
-               if ($sock //= $lei->{sock}) { # issue, async wait
-                       $lei->{sto}->wq_io_do('done', [ $sock ]);
-               } else { # forcibly wait
-                       my $wait = $lei->{sto}->wq_do('done');
-               }
-       };
+       $sock //= $lei->{sock};
+       my @io;
+       push(@io, $sock) if $sock; # async wait iff possible
+       eval { $lei->{sto}->wq_io_do('done', \@io) };
        warn($@) if $@;
 }