diff options
author | Eric Wong <e@80x24.org> | 2023-05-04 11:06:42 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-05-04 11:37:29 +0000 |
commit | e71190ef4081417172da9cd07ec592a4ef7accf4 (patch) | |
tree | 3cfa238422b92ae8cf6218d9467891b5f68b4fbd /script | |
parent | 911bfe6f5beb62f20aafb05d9f3f8c40f8155310 (diff) | |
download | public-inbox-e71190ef4081417172da9cd07ec592a4ef7accf4.tar.gz |
xcpdb is necessary for upgrading Xapian backends (e.g. glass to honey), thus codesearch indices (cindex) must be supported. Resharding is also useful if CPU count is altered on system upgrades or downgrades. cindex Xapian sharding is completely different than anything else we do, so the resharding operation must be a special case based on existing cindex sharding rules.
Diffstat (limited to 'script')
-rwxr-xr-x | script/public-inbox-xcpdb | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/script/public-inbox-xcpdb b/script/public-inbox-xcpdb index 24fc5a25..fac54559 100755 --- a/script/public-inbox-xcpdb +++ b/script/public-inbox-xcpdb @@ -1,11 +1,10 @@ #!perl -w -# Copyright (C) 2019-2021 all contributors <meta@public-inbox.org> +# Copyright (C) all contributors <meta@public-inbox.org> # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> -use strict; -use v5.10.1; +use v5.12; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); my $help = <<EOF; # the following should fit w/o scrolling in 80x24 term: -usage: public-inbox-xcpdb [options] <INBOX_DIR|EXTINDEX_DIR> +usage: public-inbox-xcpdb [options] <INBOX_DIR|EXTINDEX_DIR|CINDEX_DIR> upgrade or reshard Xapian DB(s) used by public-inbox @@ -26,7 +25,8 @@ index options (see public-inbox-index(1) man page for full description): See public-inbox-xcpdb(1) man page for full documentation. EOF -my $opt = { quiet => -1, compact => 0, fsync => 1, -eidx_ok => 1 }; +my $opt = { quiet => -1, compact => 0, fsync => 1, + -eidx_ok => 1, -cidx_ok => 1 }; GetOptions($opt, qw( fsync|sync! compact|c reshard|R=i max_size|max-size=s batch_size|batch-size=s @@ -42,8 +42,9 @@ PublicInbox::Admin::do_chdir(delete $opt->{C}); require PublicInbox::Config; my $cfg = PublicInbox::Config->new; -my ($ibxs, $eidxs) = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg); -unless ($ibxs) { print STDERR $help; exit 1 } +my ($ibxs, $eidxs, $cidxs) = + PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg); +unless (@$ibxs || @$eidxs || @$cidxs) { print STDERR $help; exit 1 } my $idx_env = PublicInbox::Admin::index_prepare($opt, $cfg); # we only set XAPIAN_FLUSH_THRESHOLD for index, since cpdb doesn't @@ -63,6 +64,7 @@ for my $ibx (@$ibxs) { PublicInbox::Xapcmd::run($ibx, 'cpdb', $opt); } -for my $eidx (@$eidxs) { - PublicInbox::Xapcmd::run($eidx, 'cpdb', $opt); +for my $ibxish (@$eidxs, @$cidxs) { + my $restore = $ibxish->can('prep_umask') ? $ibxish->prep_umask : undef; + PublicInbox::Xapcmd::run($ibxish, 'cpdb', $opt); } |