about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2018-05-24 08:32:16 +0000
committerEric Wong <e@80x24.org>2018-05-24 08:32:42 +0000
commitc339a14b11c57e7b330f4efef6903bcbea2b3463 (patch)
tree250bb9b45fb76fbe4057cfd4a7ba087152e14a51
parent62620b9437bfd0f212ad8113d4f51aa079d0d142 (diff)
downloadpublic-inbox-c339a14b11c57e7b330f4efef6903bcbea2b3463.tar.gz
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 <konstantin@linuxfoundation.org>
-rw-r--r--lib/PublicInbox/SearchIdx.pm2
-rw-r--r--t/convert-compact.t5
-rw-r--r--t/v2mirror.t2
3 files changed, 7 insertions, 2 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 74f9267e..107cd345 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 e9232003..def03436 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 9e0c9e1d..4cd369bd 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',