diff options
author | Eric Wong <e@80x24.org> | 2021-10-12 11:47:03 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-10-12 21:46:35 +0000 |
commit | 2a3c8d7a2c40ad9424db10d68470d8bb120bddf9 (patch) | |
tree | 11b2a2d1566a06555f255f960f9ea7b07eeccfc5 /lib/PublicInbox/Inbox.pm | |
parent | 212578b82ad3cb28b2d18f36c656be56a27fd5bc (diff) | |
download | public-inbox-2a3c8d7a2c40ad9424db10d68470d8bb120bddf9.tar.gz |
The cost of opening a Xapian DB (even with shards) isn't high, so save some FDs and just close it. We hit Xapian far less than over.sqlite3 and we discard the MSet ASAP even when streaming large responses. This simplifies our code a bit and hopefully helps reduce fragmentation by increasing mortality of late allocations.
Diffstat (limited to 'lib/PublicInbox/Inbox.pm')
-rw-r--r-- | lib/PublicInbox/Inbox.pm | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index 724df50a..61d153bf 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -11,8 +11,6 @@ use List::Util qw(max); use Carp qw(croak); # returns true if further checking is required -sub cleanup_shards { $_[0]->{search} ? $_[0]->{search}->cleanup_shards : undef } - sub check_inodes ($) { for (qw(over mm)) { $_[0]->{$_}->check_inodes if $_[0]->{$_} } } @@ -31,7 +29,8 @@ sub do_cleanup { delete(@$ibx{qw(over mm description cloneurl -imap_url -nntp_url)}); } - $ibx->cleanup_shards and $live = 1; + my $srch = $ibx->{search} // $ibx; + delete @$srch{qw(xdb qp)}; for my $git (@{$ibx->{-repo_objs} // []}) { $live = 1 if $git->cleanup(1); } @@ -138,17 +137,18 @@ sub max_git_epoch { $cur; } +sub mm_file { + my ($self) = @_; + my $d = $self->{inboxdir}; + ($self->version >= 2 ? $d : "$d/public-inbox").'/msgmap.sqlite3'; +} + sub mm { my ($self, $req) = @_; $self->{mm} //= eval { require PublicInbox::Msgmap; _cleanup_later($self); - my $dir = $self->{inboxdir}; - if ($self->version >= 2) { - PublicInbox::Msgmap->new_file("$dir/msgmap.sqlite3"); - } else { - PublicInbox::Msgmap->new($dir); - } + PublicInbox::Msgmap->new_file(mm_file($self)); } // ($req ? croak("E: $@") : undef); } |