about summary refs log tree commit homepage
path: root/lib/PublicInbox/Inbox.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-06-01 00:20:51 +0000
committerEric Wong <e@80x24.org>2019-06-01 03:05:54 +0000
commitf44196a157cc8d806b142230d4ecf5f2687c0352 (patch)
tree4cd7912acb043971c6c937addb6b3321b232023b /lib/PublicInbox/Inbox.pm
parent209e8ae75919762654e2ffc30aa2d7e86ec535f0 (diff)
downloadpublic-inbox-f44196a157cc8d806b142230d4ecf5f2687c0352.tar.gz
A constant stream of traffic to either httpd/nntpd would mean
git-cat-file processes never expire.  Things can go bad after a
full repack, as a full repack will unlink old pack indices and
git-cat-file does not currently detect unlinked files.

We could do something complicated by recursively stat-ing
objects/pack of every git directory and alternate;
but that's probably not worth the trouble compared to
occasionally restarting the cat-file process.

So simplify the code and let httpd/nntpd expire them
periodically, since spawning a "git-cat-file --batch" process
isn't too expensive.  We already spawn for every request which
hits git-http-backend, cgit, and git-apply.

In the future, we may optionally support the Git::Raw module
to avoid IPC; but we must remain careful to not leave lingering
FDs open to unlinked files after repack.
Diffstat (limited to 'lib/PublicInbox/Inbox.pm')
-rw-r--r--lib/PublicInbox/Inbox.pm5
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index 2771a241..b3178b98 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -32,13 +32,12 @@ sub cleanup_task () {
                                 # refcnt is zero when tmp is out-of-scope
                         }
                 }
-                my $expire = time - 60;
                 if (my $git = $ibx->{git}) {
-                        $again = $git->cleanup($expire);
+                        $again = $git->cleanup;
                 }
                 if (my $gits = $ibx->{-repo_objs}) {
                         foreach my $git (@$gits) {
-                                $again = 1 if $git->cleanup($expire);
+                                $again = 1 if $git->cleanup;
                         }
                 }
                 if ($have_devel_peek) {