From 61a2fff5b34a3e32f49ee35c1e32b7931d9bb519 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 23 May 2019 09:36:48 +0000 Subject: admin: move index_inbox over We will be reindexing after copydatabase --- lib/PublicInbox/Admin.pm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'lib/PublicInbox/Admin.pm') 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; -- cgit v1.2.3-24-ge0c7