From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 333F61FB0F for ; Fri, 1 Oct 2021 09:54:46 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 6/9] inbox: inline and eliminate git_cleanup Date: Fri, 1 Oct 2021 09:54:42 +0000 Message-Id: <20211001095445.9326-7-e@80x24.org> In-Reply-To: <20211001095445.9326-1-e@80x24.org> References: <20211001095445.9326-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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") --- lib/PublicInbox/Inbox.pm | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index 95467d5ac54b..7c1c3afedf2d 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 {