]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/SearchIdx.pm
searchidx: use singular `$opt' for consistency with v2
[public-inbox.git] / lib / PublicInbox / SearchIdx.pm
index 2248973131d16ba690ce42c68be7082ee8e270c7..5c39f3d620e3e774faab522c9de3113f995733d5 100644 (file)
@@ -18,15 +18,14 @@ use PublicInbox::IdxStack;
 use Carp qw(croak);
 use POSIX qw(strftime);
 use PublicInbox::OverIdx;
-use PublicInbox::Spawn qw(spawn);
+use PublicInbox::Spawn qw(spawn nodatacow_dir);
 use PublicInbox::Git qw(git_unquote);
 use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
-our @EXPORT_OK = qw(crlf_adjust log2stack is_ancestor check_size nodatacow_dir);
+our @EXPORT_OK = qw(crlf_adjust log2stack is_ancestor check_size);
 my $X = \%PublicInbox::Search::X;
 my ($DB_CREATE_OR_OPEN, $DB_OPEN);
 our $DB_NO_SYNC = 0;
-our $BATCH_BYTES = defined($ENV{XAPIAN_FLUSH_THRESHOLD}) ?
-                       0x7fffffff : 1_000_000;
+our $BATCH_BYTES = $ENV{XAPIAN_FLUSH_THRESHOLD} ? 0x7fffffff : 1_000_000;
 use constant DEBUG => !!$ENV{DEBUG};
 
 my $xapianlevels = qr/\A(?:full|medium)\z/;
@@ -68,7 +67,6 @@ sub new {
                my $dir = $self->xdir;
                $self->{over} = PublicInbox::OverIdx->new("$dir/over.sqlite3");
                $self->{over}->{-no_fsync} = 1 if $ibx->{-no_fsync};
-               $self->{index_max_size} = $ibx->{index_max_size};
        } elsif ($version == 2) {
                defined $shard or die "shard is required for v2\n";
                # shard is a number
@@ -110,12 +108,6 @@ sub load_xapian_writable () {
        1;
 }
 
-sub nodatacow_dir ($) {
-       my ($dir) = @_;
-       opendir my $dh, $dir or die "opendir($dir): $!\n";
-       PublicInbox::Spawn::set_nodatacow(fileno($dh));
-}
-
 sub idx_acquire {
        my ($self) = @_;
        my $flag;
@@ -547,11 +539,11 @@ sub unindex_both { # git->cat_async callback
 
 # called by public-inbox-index
 sub index_sync {
-       my ($self, $opts) = @_;
-       delete $self->{lock_path} if $opts->{-skip_lock};
-       $self->{ibx}->with_umask(\&_index_sync, $self, $opts);
-       if ($opts->{reindex}) {
-               my %again = %$opts;
+       my ($self, $opt) = @_;
+       delete $self->{lock_path} if $opt->{-skip_lock};
+       $self->{ibx}->with_umask(\&_index_sync, $self, $opt);
+       if ($opt->{reindex}) {
+               my %again = %$opt;
                delete @again{qw(rethread reindex)};
                index_sync($self, \%again);
        }
@@ -560,10 +552,10 @@ sub index_sync {
 sub check_size { # check_async cb for -index --max-size=...
        my ($oid, $type, $size, $arg, $git) = @_;
        (($type // '') eq 'blob') or die "E: bad $oid in $git->{git_dir}";
-       if ($size <= $arg->{index_max_size}) {
+       if ($size <= $arg->{max_size}) {
                $git->cat_async($oid, $arg->{index_oid}, $arg);
        } else {
-               warn "W: skipping $oid ($size > $arg->{index_max_size})\n";
+               warn "W: skipping $oid ($size > $arg->{max_size})\n";
        }
 }
 
@@ -580,7 +572,7 @@ sub v1_checkpoint ($$;$) {
                        $self->{mm}->last_commit($newest);
                }
        } else {
-               ${$sync->{max}} = $BATCH_BYTES;
+               ${$sync->{max}} = $self->{batch_bytes};
        }
 
        $self->{mm}->{dbh}->commit;
@@ -610,7 +602,7 @@ sub v1_checkpoint ($$;$) {
 sub process_stack {
        my ($self, $sync, $stk) = @_;
        my $git = $self->{ibx}->git;
-       my $max = $BATCH_BYTES;
+       my $max = $self->{batch_bytes};
        my $nr = 0;
        $sync->{nr} = \$nr;
        $sync->{max} = \$max;
@@ -624,13 +616,13 @@ sub process_stack {
                        $git->cat_async($oid, \&unindex_both, $self);
                }
        }
-       if ($sync->{index_max_size} = $self->{ibx}->{index_max_size}) {
+       if ($sync->{max_size} = $sync->{-opt}->{max_size}) {
                $sync->{index_oid} = \&index_both;
        }
        while (my ($f, $at, $ct, $oid) = $stk->pop_rec) {
                if ($f eq 'm') {
                        my $arg = { %$sync, autime => $at, cotime => $ct };
-                       if ($sync->{index_max_size}) {
+                       if ($sync->{max_size}) {
                                $git->check_async($oid, \&check_size, $arg);
                        } else {
                                $git->cat_async($oid, \&index_both, $arg);
@@ -753,14 +745,15 @@ sub reindex_from ($$) {
 
 # indexes all unindexed messages (v1 only)
 sub _index_sync {
-       my ($self, $opts) = @_;
-       my $tip = $opts->{ref} || 'HEAD';
+       my ($self, $opt) = @_;
+       my $tip = $opt->{ref} || 'HEAD';
        my $git = $self->{ibx}->git;
+       $self->{batch_bytes} = $opt->{batch_size} // $BATCH_BYTES;
        $git->batch_prepare;
-       my $pr = $opts->{-progress};
-       my $sync = { reindex => $opts->{reindex}, -opt => $opts };
+       my $pr = $opt->{-progress};
+       my $sync = { reindex => $opt->{reindex}, -opt => $opt };
        my $xdb = $self->begin_txn_lazy;
-       $self->{over}->rethread_prepare($opts);
+       $self->{over}->rethread_prepare($opt);
        my $mm = _msgmap_init($self);
        if ($sync->{reindex}) {
                my $last = $mm->last_commit;