diff options
author | Eric Wong <e@80x24.org> | 2019-06-01 00:20:51 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-06-01 03:05:54 +0000 |
commit | f44196a157cc8d806b142230d4ecf5f2687c0352 (patch) | |
tree | 4cd7912acb043971c6c937addb6b3321b232023b /lib/PublicInbox/Inbox.pm | |
parent | 209e8ae75919762654e2ffc30aa2d7e86ec535f0 (diff) | |
download | public-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.pm | 5 |
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) { |