From 3688ac90abfaa8ad55b0767202aebcc8e2d02147 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 16 Oct 2021 01:00:59 +0000 Subject: [PATCH] extindex: prune invalid alternate entries on --gc Seeing the same warning over and over again gets annoying. --- lib/PublicInbox/ExtSearchIdx.pm | 8 ++++---- lib/PublicInbox/MultiGit.pm | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm index ba7588d5..a08a9451 100644 --- a/lib/PublicInbox/ExtSearchIdx.pm +++ b/lib/PublicInbox/ExtSearchIdx.pm @@ -1192,7 +1192,7 @@ sub idx_init { # similar to V2Writable $self->git->cleanup; my $mode = 0644; my $ALL = $self->git->{git_dir}; # topdir/ALL.git - my ($has_new, $alt, $seen); + my ($has_new, $alt, $seen, $prune, $prune_nr); if ($opt->{-private}) { # LeiStore my $local = "$self->{topdir}/local"; # lei/store $self->{mg} //= PublicInbox::MultiGit->new($self->{topdir}, @@ -1208,8 +1208,8 @@ sub idx_init { # similar to V2Writable } else { # extindex has no epochs $self->{mg} //= PublicInbox::MultiGit->new($self->{topdir}, 'ALL.git'); - ($alt, $seen) = $self->{mg}->read_alternates(\$mode, - $opt->{-idx_gc}); + $prune = $opt->{-idx_gc} ? \$prune_nr : undef; + ($alt, $seen) = $self->{mg}->read_alternates(\$mode, $prune); PublicInbox::Import::init_bare($ALL); } @@ -1243,7 +1243,7 @@ sub idx_init { # similar to V2Writable } $new .= "$d\n"; } - ($has_new || $new ne '') and + ($has_new || $prune_nr || $new ne '') and $self->{mg}->write_alternates($mode, $alt, $new); $git_midx and $self->with_umask(sub { my @cmd = ('multi-pack-index'); diff --git a/lib/PublicInbox/MultiGit.pm b/lib/PublicInbox/MultiGit.pm index 91d7998a..9429a00c 100644 --- a/lib/PublicInbox/MultiGit.pm +++ b/lib/PublicInbox/MultiGit.pm @@ -45,7 +45,11 @@ sub read_alternates { $alt{$rel} = $score; } else { warn "W: stat($dir) failed: $! ($f)"; - $alt{$rel} = $score unless $prune; + if ($prune) { + ++$$prune; + } else { + $alt{$rel} = $score; + } } } } elsif (!$!{ENOENT}) { -- 2.44.0