diff options
author | Eric Wong <e@yhbt.net> | 2021-01-17 07:09:59 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-01-18 09:25:12 +0000 |
commit | 597bf28a21da8e89e044090918c0a1ad74efb8b9 (patch) | |
tree | 0c0bedd892cc73ff2e5c47696cd69e0f01675300 /lib/PublicInbox/SearchIdx.pm | |
parent | 6b498db4b518938e32d7feff85816f3c6dcf3651 (diff) | |
download | public-inbox-597bf28a21da8e89e044090918c0a1ad74efb8b9.tar.gz |
Xapian v1.2.21..v1.2.24 failed to set the close-on-exec flag on the flintlock FD, causing "git cat-file" processes to hold onto the lock and prevent subsequent Xapian::WritableDatabase from locking the DB. So cleanup git processes after committing the miscidx transaction.
Diffstat (limited to 'lib/PublicInbox/SearchIdx.pm')
-rw-r--r-- | lib/PublicInbox/SearchIdx.pm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index adced076..7f7b980d 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -105,8 +105,11 @@ sub load_xapian_writable () { $DB_CREATE_OR_OPEN = eval($xap.'::DB_CREATE_OR_OPEN()'); $DB_OPEN = eval($xap.'::DB_OPEN()'); my $ver = (eval($xap.'::major_version()') << 16) | - (eval($xap.'::minor_version()') << 8); + (eval($xap.'::minor_version()') << 8) | + eval($xap.'::revision()'); $DB_NO_SYNC = 0x4 if $ver >= 0x10400; + # Xapian v1.2.21..v1.2.24 were missing close-on-exec on OFD locks + $X->{CLOEXEC_UNSET} = 1 if $ver >= 0x010215 && $ver <= 0x010218; 1; } |