about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-10-01 09:54:42 +0000
committerEric Wong <e@80x24.org>2021-10-01 12:06:32 +0000
commit0fa6324e2f45a93dbfca57989ca115b13048133f (patch)
tree712099640ffaff194dd0b711562f7ecfbb5d33e0 /lib/PublicInbox
parent1c52f49354aa83e71fcceccae888da0c77f2391d (diff)
downloadpublic-inbox-0fa6324e2f45a93dbfca57989ca115b13048133f.tar.gz
It was probably incorrect to use from max_git_epoch, and it's
small enough to inline into do_cleanup.  We'll also eliminate
the unnecessary deletion of {-altid_map} while we're in the
area, since we no longer cache/memoize that.

Fixes: 7e5cea05f061e757 ("inbox: rewrite cleanup to be more aggressive")
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/Inbox.pm25
1 files changed, 8 insertions, 17 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index 95467d5a..7c1c3afe 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -10,31 +10,22 @@ use PublicInbox::Eml;
 use List::Util qw(max);
 use Carp qw(croak);
 
-sub git_cleanup ($) {
-        my ($self) = @_;
-        my $git = $self->{git} // return undef;
-        # normal inboxes have low startup cost and there may be many, so
-        # keep process+pipe counts in check.  ExtSearch may have high startup
-        # cost (e.g. ->ALL) and but likely one per-daemon, so cleanup only
-        # if there's unlinked files
-        my $live = $self->isa(__PACKAGE__) ? $git->cleanup(1)
-                                        : $git->cleanup_if_unlinked;
-        delete($self->{git}) unless $live;
-        $live;
-}
-
 # returns true if further checking is required
 sub cleanup_shards { $_[0]->{search} ? $_[0]->{search}->cleanup_shards : undef }
 
 sub do_cleanup {
         my ($ibx) = @_;
-        my $live = git_cleanup($ibx);
+        my $live;
+        if (defined $ibx->{git}) {
+                $live = $ibx->isa(__PACKAGE__) ? $ibx->{git}->cleanup(1)
+                                        : $ibx->{git}->cleanup_if_unlinked;
+                delete($ibx->{git}) unless $live;
+        }
         $ibx->cleanup_shards and $live = 1;
         for my $git (@{$ibx->{-repo_objs} // []}) {
                 $live = 1 if $git->cleanup(1);
         }
-        delete @$ibx{qw(over mm description cloneurl
-                        -altid_map -imap_url -nntp_url)};
+        delete(@$ibx{qw(over mm description cloneurl -imap_url -nntp_url)});
         PublicInbox::DS::add_uniq_timer($ibx+0, 5, \&do_cleanup, $ibx) if $live;
 }
 
@@ -126,7 +117,7 @@ sub max_git_epoch {
         my $cur = $self->{-max_git_epoch};
         my $changed;
         if (!defined($cur) || ($changed = git($self)->alternates_changed)) {
-                git_cleanup($self) if $changed;
+                $self->{git}->cleanup if $changed;
                 my $gits = "$self->{inboxdir}/git";
                 if (opendir my $dh, $gits) {
                         my $max = max(map {