about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-05-28 23:48:45 +0000
committerEric Wong <e@80x24.org>2019-05-29 08:03:46 +0000
commit8623271ca56f132e6f2f48409faf6c38f2d8d77a (patch)
tree8b17c9ccbdbe09c3509efd8f1e7f91a5a6cab199
parent9582c6a225969e02a03e1889da99cdc6fffc9f6f (diff)
downloadpublic-inbox-8623271ca56f132e6f2f48409faf6c38f2d8d77a.tar.gz
Another small step to reduce parameters passed to reindex_oid.
-rw-r--r--lib/PublicInbox/V2Writable.pm18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 584767ae..efb9f42b 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -695,18 +695,18 @@ sub atfork_child {
 }
 
 sub mark_deleted {
-        my ($self, $D, $git, $oid) = @_;
+        my ($self, $sync, $git, $oid) = @_;
         my $msgref = $git->cat_file($oid);
         my $mime = PublicInbox::MIME->new($$msgref);
         my $mids = mids($mime->header_obj);
         my $cid = content_id($mime);
         foreach my $mid (@$mids) {
-                $D->{"$mid\0$cid"} = $oid;
+                $sync->{D}->{"$mid\0$cid"} = $oid;
         }
 }
 
 sub reindex_oid {
-        my ($self, $sync, $D, $git, $oid, $regen, $reindex) = @_;
+        my ($self, $sync, $git, $oid, $regen, $reindex) = @_;
         my $len;
         my $msgref = $git->cat_file($oid, \$len);
         my $mime = PublicInbox::MIME->new($$msgref);
@@ -719,7 +719,7 @@ sub reindex_oid {
         my $num = -1;
         my $del = 0;
         foreach my $mid (@$mids) {
-                $del += delete($D->{"$mid\0$cid"}) ? 1 : 0;
+                $del += delete($sync->{D}->{"$mid\0$cid"}) ? 1 : 0;
                 my $n = $sync->{mm_tmp}->num_for($mid);
                 if (defined $n && $n > $num) {
                         $mid0 = $mid;
@@ -963,6 +963,7 @@ sub index_sync {
         $self->idx_init($opts); # acquire lock
         my $sync = {
                 mm_tmp => $self->{mm}->tmp_clone,
+                D => {}, # "$mid\0$cid" => $oid
         };
         my $reindex = $opts->{reindex};
         my $ranges = index_ranges($self, $reindex, $epoch_max);
@@ -977,7 +978,6 @@ sub index_sync {
                 $$regen += $high;
         }
 
-        my $D = {}; # "$mid\0$cid" => $oid
         my @cmd = qw(log --raw -r --pretty=tformat:%H
                         --no-notes --no-color --no-abbrev --no-renames);
 
@@ -999,10 +999,10 @@ sub index_sync {
                         if (/\A$x40$/o && !defined($cmt)) {
                                 $cmt = $_;
                         } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\tm$/o) {
-                                $self->reindex_oid($sync, $D, $git, $1,
+                                $self->reindex_oid($sync, $git, $1,
                                                 $regen, $reindex);
                         } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\td$/o) {
-                                $self->mark_deleted($D, $git, $1);
+                                $self->mark_deleted($sync, $git, $1);
                         }
                 }
                 $fh = undef;
@@ -1012,9 +1012,9 @@ sub index_sync {
 
         # unindex is required for leftovers if "deletes" affect messages
         # in a previous fetch+index window:
-        if (scalar keys %$D) {
+        if (my @leftovers = values %{delete $sync->{D}}) {
                 my $git = $self->{-inbox}->git;
-                $self->unindex_oid($git, $_) for values %$D;
+                $self->unindex_oid($git, $_) for @leftovers;
                 $git->cleanup;
         }
         $self->done;