From e71190ef4081417172da9cd07ec592a4ef7accf4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 4 May 2023 11:06:42 +0000 Subject: xcpdb: support cindex upgrades and resharding 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. --- script/public-inbox-xcpdb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'script') 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 +# Copyright (C) all contributors # License: AGPL-3.0+ -use strict; -use v5.10.1; +use v5.12; use Getopt::Long qw(:config gnu_getopt no_ignore_case auto_abbrev); my $help = < +usage: public-inbox-xcpdb [options] 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); } -- cgit v1.2.3-24-ge0c7