diff options
author | Eric Wong <e@yhbt.net> | 2020-05-24 03:06:37 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-05-25 09:12:19 +0000 |
commit | d6763f26cd82cae90ced264cfa59d0163ee5180f (patch) | |
tree | 194159655047df6cd972a3233e3d5dbe167a1f98 /lib/PublicInbox | |
parent | b77d02aabb32a5a45e69701d2dcdc06ec53ef386 (diff) | |
download | public-inbox-d6763f26cd82cae90ced264cfa59d0163ee5180f.tar.gz |
We don't need to load Xapian until we have a directory which looks like a shard, otherwise we're wasting cycles on memory when running short-lived processes.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/V2Writable.pm | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 513e9f23..b393b31f 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -75,11 +75,14 @@ sub count_shards ($) { # Also, shard count may change while -watch is running # due to "xcpdb --reshard" if (-d $xpfx) { - require PublicInbox::Search; - PublicInbox::Search::load_xapian(); - my $XapianDatabase = $PublicInbox::Search::X{Database}; + my $XapianDatabase; foreach my $shard (<$xpfx/*>) { -d $shard && $shard =~ m!/[0-9]+\z! or next; + $XapianDatabase //= do { + require PublicInbox::Search; + PublicInbox::Search::load_xapian(); + $PublicInbox::Search::X{Database}; + }; eval { $XapianDatabase->new($shard)->close; $n++; |