diff options
author | Eric Wong <e@80x24.org> | 2019-05-23 09:36:48 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-05-23 17:43:50 +0000 |
commit | 61a2fff5b34a3e32f49ee35c1e32b7931d9bb519 (patch) | |
tree | a3483107271119d267de5253e29fe5100f85a20d /lib/PublicInbox/Admin.pm | |
parent | adbf11e0f16714922b5eddb77d5227301a6d5adf (diff) | |
download | public-inbox-61a2fff5b34a3e32f49ee35c1e32b7931d9bb519.tar.gz |
We will be reindexing after copydatabase
Diffstat (limited to 'lib/PublicInbox/Admin.pm')
-rw-r--r-- | lib/PublicInbox/Admin.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm index 27848209..94f47abb 100644 --- a/lib/PublicInbox/Admin.pm +++ b/lib/PublicInbox/Admin.pm @@ -135,4 +135,36 @@ invalid indexlevel=$indexlevel (must be `basic', `medium', or `full') die missing_mod_msg($err) ." required for indexlevel=$indexlevel\n"; } +sub index_inbox { + my ($ibx, $opt) = @_; + my $jobs = delete $opt->{jobs} if $opt; + if (ref($ibx) && ($ibx->{version} || 1) == 2) { + eval { require PublicInbox::V2Writable }; + die "v2 requirements not met: $@\n" if $@; + my $v2w = eval { + PublicInbox::V2Writable->new($ibx, {nproc=>$jobs}); + }; + if (defined $jobs) { + if ($jobs == 0) { + $v2w->{parallel} = 0; + } else { + my $n = $v2w->{partitions}; + if ($jobs != ($n + 1)) { + warn +"Unable to respect --jobs=$jobs, inbox was created with $n partitions\n"; + } + } + } + my $warn_cb = $SIG{__WARN__} || sub { print STDERR @_ }; + local $SIG{__WARN__} = sub { + $warn_cb->($v2w->{current_info}, ': ', @_); + }; + $v2w->index_sync($opt); + } else { + require PublicInbox::SearchIdx; + my $s = PublicInbox::SearchIdx->new($ibx, 1); + $s->index_sync($opt); + } +} + 1; |