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

Attachment: pgpr7RKot21Du.pgp
Description: PGP signature

_______________________________________________
notmuch mailing list
[email protected]
http://notmuchmail.org/mailman/listinfo/notmuch

Reply via email to