[PATCH 0/3] notmuch-deliver: wait for database to become unlocked and test
Ali Polatel
polatel at gmail.com
Sun Nov 6 17:32:29 PST 2011
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:AANLkTi=KOx8aTJipkiArFVjEHE6zt_JypoASMiiAWBZ6 at mail.gmail.com
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
>notmuch at notmuchmail.org
>http://notmuchmail.org/mailman/listinfo/notmuch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://notmuchmail.org/pipermail/notmuch/attachments/20111107/4a0fc988/attachment.pgp>
More information about the notmuch
mailing list