From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: 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.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id E37BC1F51C for ; Thu, 24 May 2018 08:32:16 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] workaround Xapian OFD locks w/o close-on-exec Date: Thu, 24 May 2018 08:32:16 +0000 Message-Id: <20180524083216.30440-1-e@80x24.org> List-Id: 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 --- 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