about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2023-11-21 12:43:13 +0000
committerEric Wong <e@80x24.org>2023-11-21 21:37:16 +0000
commit4d391b70167cce31f57b1364753a844885614b8a (patch)
tree23673e076b873c7b57f546bb668ab69d08c33610 /lib/PublicInbox
parentabcdd9217ba5cdb03629b0d17ef3d8ee42ab62f7 (diff)
downloadpublic-inbox-4d391b70167cce31f57b1364753a844885614b8a.tar.gz
We only set $MAX_SIZE at startup, and there's no need to
use a local $self->{roots} for the per-repo roots array.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/CodeSearchIdx.pm13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm
index 54a2ba22..bbccc0e3 100644
--- a/lib/PublicInbox/CodeSearchIdx.pm
+++ b/lib/PublicInbox/CodeSearchIdx.pm
@@ -152,8 +152,8 @@ EOM
 # TODO: may be used for reshard/compact
 sub count_shards { scalar($_[0]->xdb_shards_flat) }
 
-sub update_commit ($$) {
-        my ($self, $cmt) = @_; # fields from @FMT
+sub update_commit ($$$) {
+        my ($self, $cmt, $roots) = @_; # fields from @FMT
         my $x = 'Q'.$cmt->{H};
         my ($docid, @extra) = sort { $a <=> $b } docids_by_postlist($self, $x);
         @extra and warn "W: $cmt->{H} indexed multiple times, pruning ",
@@ -161,7 +161,7 @@ sub update_commit ($$) {
         $self->{xdb}->delete_document($_) for @extra;
         my $doc = $PublicInbox::Search::X{Document}->new;
         $doc->add_boolean_term($x);
-        $doc->add_boolean_term('G'.$_) for @{$self->{roots}};
+        $doc->add_boolean_term('G'.$_) for @$roots;
         $doc->add_boolean_term('XP'.$_) for split(/ /, $cmt->{P});
         $doc->add_boolean_term('T'.'c');
 
@@ -277,9 +277,7 @@ sub cidx_read_log_p {
         my ($self, $log_p, $rd) = @_;
         my $git = delete $log_p->{git} // die 'BUG: no {git}';
         local $self->{current_info} = "$git->{git_dir} [$self->{shard}]";
-        local $self->{roots} = delete $log_p->{roots} // die 'BUG: no {roots}';
-
-        local $MAX_SIZE = $self->{-opt}->{max_size};
+        my $roots = delete $log_p->{roots} // die 'BUG: no {roots}';
         # local-ized in parent before fork
         $TXN_BYTES = $BATCH_BYTES;
         local $self->{git} = $git; # for patchid
@@ -308,7 +306,7 @@ sub cidx_read_log_p {
                         cidx_ckpoint($self, "[$self->{shard}] $nr");
                         $TXN_BYTES -= $len; # len may be huge, >TXN_BYTES;
                 }
-                update_commit($self, $cmt);
+                update_commit($self, $cmt, $roots);
                 ++$nr;
                 cidx_ckpoint($self, "[$self->{shard}] $nr") if $TXN_BYTES <= 0;
                 $/ = $FS;
@@ -1143,6 +1141,7 @@ sub cidx_run { # main entry point
                 @ID2ROOT, $XHC, @SORT, $GITS_NR);
         local $BATCH_BYTES = $self->{-opt}->{batch_size} //
                                 $PublicInbox::SearchIdx::BATCH_BYTES;
+        local $MAX_SIZE = $self->{-opt}->{max_size};
         local $self->{ASSOC_PFX} = \@ASSOC_PFX;
         local $self->{PENDING} = {};
         local $self->{-pi_cfg};