Xapian v1.2.21..v1.2.24 (inclusive) use OFD locks but failed to
set the close-on-exec flag on those locks.  So we must continue
to work around those old versions by ensuring Xapian file
descriptors aren't held any longer than necessary when in
long-running git processes.

Reported-by: Konstantin Ryabitsev <[email protected]>
---
 lib/PublicInbox/SearchIdx.pm | 2 ++
 t/convert-compact.t          | 5 ++++-
 t/v2mirror.t                 | 2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 74f9267..107cd34 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -666,6 +666,7 @@ sub _index_sync {
 
                $self->{over}->rollback_lazy;
                $self->{over}->disconnect;
+               $git->cleanup;
                delete $self->{txn};
                $xdb->cancel_transaction;
                $xdb = _xdb_release($self);
@@ -696,6 +697,7 @@ sub _index_sync {
                        }
                }
                $self->commit_txn_lazy;
+               $git->cleanup;
                $xdb = _xdb_release($self);
                # let another process do some work... <
                if (!$newest) {
diff --git a/t/convert-compact.t b/t/convert-compact.t
index e923200..def0343 100644
--- a/t/convert-compact.t
+++ b/t/convert-compact.t
@@ -40,7 +40,10 @@ ok($im->add($mime), 'added one message');
 ok($im->remove($mime), 'remove message');
 ok($im->add($mime), 'added message again');
 $im->done;
-PublicInbox::SearchIdx->new($ibx, 1)->index_sync;
+for (1..2) {
+       eval { PublicInbox::SearchIdx->new($ibx, 1)->index_sync; };
+       is($@, '', 'no errors syncing');
+}
 
 is(((stat("$ibx->{mainrepo}/public-inbox"))[2]) & 07777, 0755,
        'sharedRepository respected for v1');
diff --git a/t/v2mirror.t b/t/v2mirror.t
index 9e0c9e1..4cd369b 100644
--- a/t/v2mirror.t
+++ b/t/v2mirror.t
@@ -50,7 +50,7 @@ for my $i (1..9) {
        $mime->header_set('Subject', "subject = $i");
        ok($v2w->add($mime), "add msg $i OK");
 }
-$v2w->barrier;
+$v2w->done;
 
 my %opts = (
        LocalAddr => '127.0.0.1',
-- 
EW

--
unsubscribe: [email protected]
archive: https://public-inbox.org/meta/

Reply via email to