X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FXapcmd.pm;h=8de516ef5ace4f2c52ca840f52f7fe6ec3979944;hb=af0b0fb7a454470a32c452119d0392e0dedb3fe1;hp=46548a948cd4cf1fb4f430cda0439c0512a12dd4;hpb=75b5402ed1e989cd63f4f3ce4237cdad908e3984;p=public-inbox.git
diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm
index 46548a94..8de516ef 100644
--- a/lib/PublicInbox/Xapcmd.pm
+++ b/lib/PublicInbox/Xapcmd.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 all contributors
+# Copyright (C) 2018-2021 all contributors
# License: AGPL-3.0+
package PublicInbox::Xapcmd;
use strict;
@@ -19,7 +19,6 @@ our @COMPACT_OPT = qw(jobs|j=i quiet|q blocksize|b=s no-full|n fuller|F);
sub commit_changes ($$$$) {
my ($ibx, $im, $tmp, $opt) = @_;
my $reshard = $opt->{reshard};
- my $reindex = $opt->{reindex};
$SIG{INT} or die 'BUG: $SIG{INT} not handled';
my @old_shard;
@@ -38,7 +37,7 @@ sub commit_changes ($$$$) {
defined $new or die "BUG: $over exists when culling v2";
$over = PublicInbox::Over->new($over);
my $tmp_over = "$new/over.sqlite3";
- $over->connect->sqlite_backup_to_file($tmp_over);
+ $over->dbh->sqlite_backup_to_file($tmp_over);
$over = undef;
$over_chg = 1;
}
@@ -102,17 +101,16 @@ sub runnable_or_die ($) {
}
sub prepare_reindex ($$$) {
- my ($ibx, $im, $reindex) = @_;
+ my ($ibx, $im, $opt) = @_;
if ($ibx->version == 1) {
my $dir = $ibx->search->xdir(1);
my $xdb = $PublicInbox::Search::X{Database}->new($dir);
if (my $lc = $xdb->get_metadata('last_commit')) {
- $reindex->{from} = $lc;
+ $opt->{reindex}->{from} = $lc;
}
} else { # v2
- my $max;
- $im->git_dir_latest(\$max) or return;
- my $from = $reindex->{from};
+ my $max = $ibx->max_git_epoch // return;
+ my $from = $opt->{reindex}->{from};
my $mm = $ibx->mm;
my $v = PublicInbox::Search::SCHEMA_VERSION();
foreach my $i (0..$max) {
@@ -238,14 +236,14 @@ sub prepare_run {
sub check_compact () { runnable_or_die($XAPIAN_COMPACT) }
sub _run {
- my ($ibx, $cb, $opt, $reindex) = @_;
+ my ($ibx, $cb, $opt) = @_;
my $im = $ibx->importer(0);
$im->lock_acquire;
my ($tmp, $queue) = prepare_run($ibx, $opt);
# fine-grained locking if we prepare for reindex
if (!$opt->{-coarse_lock}) {
- prepare_reindex($ibx, $im, $reindex);
+ prepare_reindex($ibx, $im, $opt);
$im->lock_release;
}
@@ -262,19 +260,17 @@ sub run {
defined(my $dir = $ibx->{inboxdir}) or die "no inboxdir defined\n";
-d $dir or die "inboxdir=$dir does not exist\n";
check_compact() if $opt->{compact} && $ibx->search;
- my $reindex; # v1:{ from => $x40 }, v2:{ from => [ $x40, $x40, .. ] } }
if (!$opt->{-coarse_lock}) {
- $reindex = $opt->{reindex} = { # per-epoch ranges for v2
- from => $ibx->version == 1 ? '' : [],
- };
+ # per-epoch ranges for v2
+ # v1:{ from => $OID }, v2:{ from => [ $OID, $OID, $OID ] } }
+ $opt->{reindex} = { from => $ibx->version == 1 ? '' : [] };
PublicInbox::SearchIdx::load_xapian_writable();
}
local %SIG = %SIG;
setup_signals();
- $ibx->umask_prepare;
- $ibx->with_umask(\&_run, $ibx, $cb, $opt, $reindex);
+ $ibx->with_umask(\&_run, $ibx, $cb, $opt);
}
sub cpdb_retryable ($$) {