sub git_cleanup ($) {
my ($self) = @_;
my $git = $self->{git} or return;
- if (my $async_cat = delete $self->{async_cat}) {
- $async_cat->close;
- }
$git->cleanup;
}
for my $ibx (values %$CLEANUP) {
my $again;
if ($have_devel_peek) {
- foreach my $f (qw(mm search over)) {
+ foreach my $f (qw(mm search)) {
# we bump refcnt by assigning tmp, here:
my $tmp = $ibx->{$f} or next;
next if Devel::Peek::SvREFCNT($tmp) > 2;
$again = 1 if $git->cleanup;
}
}
+ check_inodes($ibx);
if ($have_devel_peek) {
- $again ||= !!($ibx->{over} || $ibx->{mm} ||
- $ibx->{search});
+ $again ||= !!($ibx->{mm} || $ibx->{search});
}
$next->{"$ibx"} = $ibx if $again;
}
delete $self->{unlock_subs}->{$ident};
}
+sub check_inodes ($) {
+ my ($self) = @_;
+ for (qw(over)) { # TODO: search, mm
+ $self->{$_}->check_inodes if $self->{$_};
+ }
+}
+
# called by inotify
sub on_unlock {
my ($self) = @_;
+ check_inodes($self);
my $subs = $self->{unlock_subs} or return;
for (values %$subs) {
eval { $_->on_inbox_unlock($self) };