On Sun, Nov 06, 2011 at 12:23:01PM +0100, David Riebenbauer wrote:
Hi,I noticed that mail would bounce in my setup, if the xapian database was locked while notmuch-deliver tried to run.
I recall having this problem sometime ago...
My solution was to make it wait for some time adn retry. A test program for is alos included.
Looks like a workaround more than a solution. What happens if the database doesn't become available for writing in the meantime? Quoting from: http://xapian.org/docs/admin_notes.html#single-writer-multiple-reader "Xapian enforces this restriction using by having a writer lock the database. Each Xapian database directory contains a lock file named flintlock (we've kept the same name as flint used, since the locking technique is the same). This lock-file will always exist, but will be locked using fcntl() when the database is open for writing. Because of the semantics of fcntl() locking, for each WritableDatabase opened we spawn a child process to hold the lock, which then exec-s cat, so you will see a cat subprocess of any writer process in the output of ps, top, etc." See? It's a simple fcntl() lock! That said, I'm against adding this kind of kludge to notmuch-deliver or any other tool accessing the database via libnotmuch. Until the issue is fixed properly I, and I suppose you, can live with a simple shell script using flock(1) on the file .notmuch/xapian/flintlock. One possible solution is described by Austin in the mail: id:[email protected] which I quite like.
Regards, David
-alip
David Riebenbauer (3): notmuch-deliver: wait for the database to become unlocked notmuch-deliver: test wait for database to become available notmuch-deliver: Convert test program to glib main loop. contrib/notmuch-deliver/.gitignore | 2 + contrib/notmuch-deliver/Makefile.am | 2 +- contrib/notmuch-deliver/configure.ac | 1 + contrib/notmuch-deliver/src/main.c | 25 +++- contrib/notmuch-deliver/test/Makefile.am | 26 +++ contrib/notmuch-deliver/test/nm-test.sh | 9 + contrib/notmuch-deliver/test/nm-testconfig | 12 ++ contrib/notmuch-deliver/test/notmuch-lock.c | 226 +++++++++++++++++++++++++++ contrib/notmuch-deliver/test/testmail | 7 + 9 files changed, 306 insertions(+), 4 deletions(-) create mode 100644 contrib/notmuch-deliver/test/Makefile.am create mode 100755 contrib/notmuch-deliver/test/nm-test.sh create mode 100644 contrib/notmuch-deliver/test/nm-testconfig create mode 100644 contrib/notmuch-deliver/test/notmuch-lock.c create mode 100644 contrib/notmuch-deliver/test/testmail -- 1.7.7.1 _______________________________________________ notmuch mailing list [email protected] http://notmuchmail.org/mailman/listinfo/notmuch
pgpr7RKot21Du.pgp
Description: PGP signature
_______________________________________________ notmuch mailing list [email protected] http://notmuchmail.org/mailman/listinfo/notmuch
