]> Sergey Matveev's repositories - public-inbox.git/commitdiff
extsearch: unconditionally reopen on access
authorEric Wong <e@80x24.org>
Sun, 27 Dec 2020 11:01:41 +0000 (11:01 +0000)
committerEric Wong <e@80x24.org>
Mon, 28 Dec 2020 23:18:48 +0000 (23:18 +0000)
Since ExtSearch lacks the janky cleanup timer of
PublicInbox::Inbox objects, its search results get stale.

Reopen the Xapian DB on every ->search call for now, as
reducing reopen calls doesn't seem worth the complexity.

The Xapian::Database::reopen operation itself takes only ~50us
on my old workstation with 3 shards totaling <200GB.  Other
parts of Xapian dominates the search time, so the reopen seems
inconsequential with single-digit shard counts.

lib/PublicInbox/ExtSearch.pm

index a2b97798bae9da6298ecc6da6b443092b582f0bc..7c9586a6b65b66cd0443228c21ea17318423053e 100644 (file)
@@ -29,8 +29,6 @@ sub misc {
        $self->{misc} //= PublicInbox::MiscSearch->new("$self->{xpfx}/misc");
 }
 
-sub search { $_[0] } # self
-
 # overrides PublicInbox::Search::_xdb
 sub _xdb {
        my ($self) = @_;
@@ -126,6 +124,6 @@ no warnings 'once';
 *recent = \&PublicInbox::Inbox::recent;
 
 *max_git_epoch = *nntp_usable = *msg_by_path = \&mm; # undef
-*isrch = *search;
+*isrch = *search = \&PublicInbox::Search::reopen;
 
 1;