From: Eric Wong Date: Sat, 1 Oct 2022 00:07:45 +0000 (+0000) Subject: git_async_cat: automatically cleanup temporary gits X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=f9ac22a4b485ae5f8ad981027d8608c13f09530e;p=public-inbox.git git_async_cat: automatically cleanup temporary gits This prevents temporary directories and git processes from lingering around after WWW solver requests. --- diff --git a/lib/PublicInbox/GitAsyncCat.pm b/lib/PublicInbox/GitAsyncCat.pm index b32c2fd3..2d601542 100644 --- a/lib/PublicInbox/GitAsyncCat.pm +++ b/lib/PublicInbox/GitAsyncCat.pm @@ -45,6 +45,12 @@ sub event_step { } } +sub git_tmp_cleanup { + my ($git) = @_; + $git->cleanup(1) and + PublicInbox::DS::add_timer(3, \&git_tmp_cleanup, $git); +} + sub ibx_async_cat ($$$$) { my ($ibx, $oid, $cb, $arg) = @_; my $git = $ibx->{git} // $ibx->git; @@ -63,6 +69,8 @@ sub ibx_async_cat ($$$$) { $git->{async_cat} //= do { my $self = bless { git => $git }, __PACKAGE__; $git->{in}->blocking(0); + $git->{-tmp} and PublicInbox::DS::add_uniq_timer( + 3, \&git_tmp_cleanup, $git); $self->SUPER::new($git->{in}, EPOLLIN|EPOLLET); \undef; # this is a true ref() };