From: Eric Wong Date: Fri, 10 Jan 2025 23:18:59 +0000 (+0000) Subject: index: move {D} (delete state) to $self X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8270faeeee94186657806cf4d456b739f56123a6;p=thirdparty%2Fpublic-inbox.git index: move {D} (delete state) to $self The {D} delete state is short-lived and may have its scope limited via `local', so take another step towards reducing internal data structures. --- diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index 9771633d5..0e84a6a66 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -914,7 +914,7 @@ sub v1_process_stack ($$$) { local $self->{latest_cmt}; $self->{mm}->{dbh}->begin_work; - if (my @leftovers = keys %{delete($sync->{D}) // {}}) { + if (my @leftovers = keys %{delete($self->{D}) // {}}) { warn('W: unindexing '.scalar(@leftovers)." leftovers\n"); for my $oid (@leftovers) { last if $self->{quit}; @@ -945,7 +945,7 @@ sub v1_process_stack ($$$) { sub log2stack ($$$$) { my ($self, $sync, $git, $range) = @_; - my $D = $sync->{D}; # OID_BIN => NR (if reindexing, undef otherwise) + my $D = $self->{D}; # OID_BIN => NR (if reindexing, undef otherwise) my ($add, $del); if ($sync->{ibx}->version == 1) { my $path = $hex.'{2}/'.$hex.'{38}'; @@ -1006,7 +1006,7 @@ sub prepare_stack ($$$) { $git->qx(qw(rev-parse -q --verify), "$range^0"); return PublicInbox::IdxStack->new->read_prepare if $?; } - $sync->{D} = $sync->{reindex} ? {} : undef; # OID_BIN => NR + local $self->{D} = $sync->{reindex} ? {} : undef; # OID_BIN => NR log2stack($self, $sync, $git, $range); } diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index ff4e973a1..6ab9cbaf4 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -914,6 +914,7 @@ sub sync_prepare ($$) { my $regen_max = 0; my $head = $sync->{ibx}->{ref_head} || 'HEAD'; my $pfx; + local $self->{D}; # delete state if ($pr) { ($pfx) = ($sync->{ibx}->{inboxdir} =~ m!([^/]+)\z!g); $pfx //= $sync->{ibx}->{inboxdir}; @@ -958,7 +959,7 @@ sub sync_prepare ($$) { # We intentionally do NOT use {D} in the non-reindex case # because we want NNTP article number gaps from unindexed # messages to show up in mirrors, too. - $sync->{D} //= $sync->{reindex} ? {} : undef; # OID_BIN => NR + $self->{D} //= $sync->{reindex} ? {} : undef; # OID_BIN => NR my $stk = log2stack($self, $sync, $git, $range); return 0 if $self->{quit}; my $nr = $stk ? $stk->num_records : 0; @@ -971,7 +972,7 @@ sub sync_prepare ($$) { # XXX this should not happen unless somebody bypasses checks in # our code and blindly injects "d" file history into git repos - if (my @leftovers = keys %{delete($sync->{D}) // {}}) { + if (my @leftovers = keys %{delete($self->{D}) // {}}) { warn('W: unindexing '.scalar(@leftovers)." leftovers\n"); local $self->{current_info} = 'leftover '; my $unindex_oid = $self->can('unindex_oid');