]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
SearchIdx,V2Writeable: Update num_highwater on optimized deletes
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index c450980c8f51dbb86357602010fa5b1eab455d27..92d2672c78c478f886a3bd7d5f9cb8c238f3456b 100644 (file)
@@ -658,7 +658,7 @@ sub mark_deleted {
 }
 
 sub reindex_oid {
-       my ($self, $mm_tmp, $D, $git, $oid, $regen) = @_;
+       my ($self, $mm_tmp, $D, $git, $oid, $regen, $reindex) = @_;
        my $len;
        my $msgref = $git->cat_file($oid, \$len);
        my $mime = PublicInbox::MIME->new($$msgref);
@@ -700,7 +700,8 @@ sub reindex_oid {
 
        if (!defined($mid0) || $del) {
                if (!defined($mid0) && $del) { # expected for deletes
-                       $$regen--;
+                       $num = $$regen--;
+                       $self->{mm}->num_highwater($num) unless $reindex;
                        return
                }
 
@@ -877,7 +878,8 @@ sub index_sync {
        return unless defined $latest;
        $self->idx_init; # acquire lock
        my $mm_tmp = $self->{mm}->tmp_clone;
-       my $ranges = $opts->{reindex} ? [] : $self->last_commits($epoch_max);
+       my $reindex = $opts->{reindex};
+       my $ranges = $reindex ? [] : $self->last_commits($epoch_max);
 
        my $high = $self->{mm}->num_highwater();
        my $regen = $self->index_prepare($opts, $epoch_max, $ranges);
@@ -903,7 +905,7 @@ sub index_sync {
                                chomp($cmt = $_);
                        } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\tm$/o) {
                                $self->reindex_oid($mm_tmp, $D, $git, $1,
-                                               $regen);
+                                               $regen, $reindex);
                        } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\td$/o) {
                                $self->mark_deleted($D, $git, $1);
                        }