From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 63B9A1F55B for ; Sun, 24 May 2020 03:06:39 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] v2writable: only load Xapian when a shard is found Date: Sun, 24 May 2020 03:06:37 +0000 Message-Id: <20200524030637.61548-1-e@yhbt.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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. --- lib/PublicInbox/V2Writable.pm | 9 ++++++--- 1 file 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++;