diff options
author | Eric Wong <e@80x24.org> | 2020-06-11 00:57:53 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-06-13 07:58:30 +0000 |
commit | 2a717d13f10fcdc69921d80cf94c47a694a175d4 (patch) | |
tree | 188b2834628fd448f9397daefb4a8a77c00cdce1 /lib/PublicInbox/Inbox.pm | |
parent | 3d52c093ad5ce7a32f8842d9ae020712f9786352 (diff) | |
download | public-inbox-2a717d13f10fcdc69921d80cf94c47a694a175d4.tar.gz |
For v1 inboxes (and possibly v2 in the future, for VACUUM), public-inbox-compact replaces over.sqlite3 with a new file. This currently doesn't need an extra inotify watch descriptor (or FD for kevent) at the moment, so it can coexist nicely for systems w/o IO::KQueue or Linux::Inotify2.
Diffstat (limited to 'lib/PublicInbox/Inbox.pm')
-rw-r--r-- | lib/PublicInbox/Inbox.pm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index b2b0b56f..7d5e0483 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -31,7 +31,7 @@ sub cleanup_task () { 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; @@ -45,9 +45,9 @@ sub cleanup_task () { $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; } @@ -407,9 +407,17 @@ sub unsubscribe_unlock { 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) }; |