diff options
author | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-22 03:39:30 +0000 |
---|---|---|
committer | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-22 07:57:27 +0000 |
commit | 4c5fa84eec85cf406cbcd900f92dc478ed14ea30 (patch) | |
tree | 5e4b2b970d510f7910a31f91322fa8d54b7900dc /script | |
parent | 4048e3c000ee6659a5754dea697a1b77a8022bbd (diff) | |
download | public-inbox-4c5fa84eec85cf406cbcd900f92dc478ed14ea30.tar.gz |
Allow best-effort regeneration of NNTP article numbers from cloned git repositories in addition to indexing Xapian Article numbers will not remain consistent when we add purge support, though.
Diffstat (limited to 'script')
-rwxr-xr-x | script/public-inbox-index | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/script/public-inbox-index b/script/public-inbox-index index cea35738..52d6ba70 100755 --- a/script/public-inbox-index +++ b/script/public-inbox-index @@ -23,8 +23,15 @@ if ($@) { } my $reindex; -my %opts = ( '--reindex' => \$reindex ); +my $regen; +my $jobs = undef; +my %opts = ( + '--reindex' => \$reindex, + '--regenerate' => \$regen, + '--jobs|j=i' => \$jobs, +); GetOptions(%opts) or die "bad command-line args\n$usage"; +die "--jobs must be positive\n" if defined $jobs && $jobs <= 0; my @dirs; @@ -93,8 +100,30 @@ sub index_dir { if (ref($repo) && ($repo->{version} || 1) == 2) { eval { require PublicInbox::V2Writable }; die "v2 requirements not met: $@\n" if $@; - my $v2w = PublicInbox::V2Writable->new($repo); - $v2w->reindex; + my $v2w = eval { + local $ENV{NPROC} = $jobs; + PublicInbox::V2Writable->new($repo); + }; + if (defined $jobs) { + if ($jobs == 1) { + $v2w->{parallel} = 0; + } else { + my $n = $v2w->{partitions}; + if ($jobs != $n) { + warn +"Unable to respect --jobs=$jobs, inbox was created with $n partitions\n"; + } + } + } + my $mm = $repo->mm; + my (undef, $max) = $mm->minmax if $mm; + if (defined($max) && !$reindex && !$regen) { + die +"v2 inboxes may only use --reindex and/or --regenerate once\n". +"msgmap.sqlite3 is initialized\n"; + } + + $v2w->reindex($regen); $v2w->done; } else { my $s = PublicInbox::SearchIdx->new($repo, 1); |