]> Sergey Matveev's repositories - public-inbox.git/commitdiff
search: delete QueryParser along with DB handle
authorEric Wong <e@80x24.org>
Tue, 12 Oct 2021 11:46:59 +0000 (11:46 +0000)
committerEric Wong <e@80x24.org>
Tue, 12 Oct 2021 21:46:33 +0000 (21:46 +0000)
Xapian::QueryParser is attached to the Xapian::Database,
so holding onto the QueryParser was preventing us from
releasing DB handles if a query was performed.

lib/PublicInbox/Search.pm
t/extsearch.t

index 17e202e1da8300c5e7927ca4322f2c49bf4a5cb8..dd6d3710d03d48592d835f302b02eddce82f52df 100644 (file)
@@ -253,7 +253,7 @@ sub cleanup_shards {
        my $nr = grep(/\A[0-9]+\z/, readdir($dh)) or
                return warn("$xpfx has no shards\n"); # true
        return reopen($self) if $nr == ($self->{nshard} // -1);
-       delete($self->{xdb});
+       delete @$self{qw(xdb qp)};
        undef;
 }
 
index 1b6235ba0eca3f8a1581c2e633da3c81b930e485..8190de17cf16d3fdd9ef28e7cde0f14c2a895904 100644 (file)
@@ -176,7 +176,7 @@ if ('inbox edited') {
        is($mset->size, 1, 'new message found');
        $mset = $es->mset('b:"test message"');
        is($mset->size, 1, 'old message found');
-       delete @$es{qw(git over xdb)}; # fork preparation
+       delete @$es{qw(git over xdb qp)}; # fork preparation
 
        my $pi_cfg = PublicInbox::Config->new;
        $pi_cfg->fill_all;