debian (1.2.22-3~bpo8+1) package build failure

Eric Wong e at 80x24.org
Sat Aug 6 04:43:48 BST 2016


Eric Wong <e at 80x24.org> wrote:
> I'm trying to test a trivial patch to set FD_CLOEXEC on the
> flintlock lockfd when using F_OFD_SETLK

Fwiw, this is the patch I was originally going to test.
(but now I see maybe my F_SETFD might only need to be
 called on F_OFD_SETLK success)   Description at bottom.

--- a/backends/flint_lock.cc
+++ b/backends/flint_lock.cc
@@ -108,6 +108,10 @@ FlintLock::lock(bool exclusive, string & explanation) {
 	return ((errno == EMFILE || errno == ENFILE) ? FDLIMIT : UNKNOWN);
     }
 
+#ifdef FD_CLOEXEC
+    (void)fcntl(lockfd, F_SETFD, FD_CLOEXEC);
+#endif
+
 #ifdef F_OFD_SETLK
     // F_OFD_SETLK has exactly the semantics we want, so use it if it's
     // available.  Support was added in Linux 3.15, and there's work on

---
The problem I'm attempting to solve comes from wanting doing an
inplace full reindex of a giant git mail repo[1] while not
stalling small incremental updates which happen as mail flows
in.

So in the reindexer, I start "git log" once for the entire
history (which feeds data for git cat-file --batch, which feeds
Xapian); and commit+close the Xapian::WritableDatabase every 100
entries.  This allows more time-critical processes doing
incremental updates to have a chance to index its data sooner
rather than waiting 20-30 minutes for the full reindex to finish.

The "git log" process is started once, after opening the Xapian
DB (I need to open the Xapian DB to get the last-indexed-commit
from metadata); but it seems the lack of close-on-exec for
the flintlock FD with F_OFD_* usage causes the lock to remain
held after closing the Xapian DB...


[1] this is an archive of the git mailing list since 2005:
    https://public-inbox.org/git/20160710004813.GA20210@dcvr.yhbt.net/T/



More information about the Xapian-devel mailing list