about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-15 07:32:06 -0200
committerEric Wong <e@80x24.org>2021-03-15 15:26:58 -0400
commitd5bc3deb285453d777f253dc36cf4b1ae694a6f8 (patch)
tree755ecbf3aca0948bd2b3625da0fd036e7e9b7fde /lib/PublicInbox
parent42fc590f8cabd23455949d002e2ddf28bbec6d1e (diff)
downloadpublic-inbox-d5bc3deb285453d777f253dc36cf4b1ae694a6f8.tar.gz
Unless leistore.dir changes, the same LeiStore object
is should remain reusable and accessible to any clients

This seems to fix problems with t/lei-q-remote-import.t
occasionally getting stuck
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/LEI.pm6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 59a3338c..31d5b838 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -606,8 +606,10 @@ sub _lei_cfg ($;$) {
         my $f = _config_path($self);
         my @st = stat($f);
         my $cur_st = @st ? pack('dd', $st[10], $st[7]) : ''; # 10:ctime, 7:size
+        my ($sto, $sto_dir);
         if (my $cfg = $PATH2CFG{$f}) { # reuse existing object in common case
                 return ($self->{cfg} = $cfg) if $cur_st eq $cfg->{-st};
+                ($sto, $sto_dir) = @$cfg{qw(-lei_store leistore.dir)};
         }
         if (!@st) {
                 unless ($creat) {
@@ -625,6 +627,10 @@ sub _lei_cfg ($;$) {
         bless $cfg, 'PublicInbox::Config';
         $cfg->{-st} = $cur_st;
         $cfg->{'-f'} = $f;
+        if ($sto && File::Spec->canonpath($sto_dir) eq
+                        File::Spec->canonpath($cfg->{'leistore.dir'})) {
+                $cfg->{-lei_store} = $sto;
+        }
         $self->{cfg} = $PATH2CFG{$f} = $cfg;
 }