From f9ac22a4b485ae5f8ad981027d8608c13f09530e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 1 Oct 2022 00:07:45 +0000 Subject: [PATCH] git_async_cat: automatically cleanup temporary gits This prevents temporary directories and git processes from lingering around after WWW solver requests. --- lib/PublicInbox/GitAsyncCat.pm | 8 ++++++++ 1 file changed, 8 insertions(+) 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() }; -- 2.44.0