]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
v2writable: only load Xapian when a shard is found
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index c732b98add3d32c96358a4279e5f065d5ab45449..b393b31f0e205f3191169762fbd1af9d76fa3d52 100644 (file)
@@ -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++;
@@ -606,7 +609,7 @@ sub barrier_wait {
        my $bnote = $self->{bnote} or return;
        my $r = $bnote->[0];
        while (scalar keys %$barrier) {
-               defined(my $l = $r->getline) or die "EOF on barrier_wait: $!";
+               defined(my $l = readline($r)) or die "EOF on barrier_wait: $!";
                $l =~ /\Abarrier (\d+)/ or die "bad line on barrier_wait: $l";
                delete $barrier->{$1} or die "bad shard[$1] on barrier wait";
        }