unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Mueen Nawaz <mueen@nawaz.org>
To: David Bremner <david@tethera.net>,
	xapian-discuss@lists.xapian.org, notmuch@notmuchmail.org
Subject: Re: Notmuch DB Problems
Date: Mon, 10 Sep 2018 07:21:11 -0700	[thread overview]
Message-ID: <874lexe8mg.fsf@nawaz.org> (raw)
In-Reply-To: <87a7opk45p.fsf@tethera.net>

David Bremner <david@tethera.net> writes:

>> Here's why it would freeze: 
>> 
>> I have a post-new hook that runs a Python script. Depending on 
>> whether the new email it is processing matches a rule I have, 
>> it will fire off an email to the sender using the SMTP library 
>> in Python. 
>> 
>> I had recently upgraded my MTA (PostFix), and it had a backward 
>> incompatible change that broke my config. I don't know why, but 
>> I could still send emails via Emacs, but when I tried to send 
>> them via Python, Postfix would log an error and it would not 
>> send. The Python statement would freeze (I guess Postfix 
>> doesn't return an appropriate response?  Not sure why).  
>>  
>> I have a cron job to run "notmuch new" 3 times an hour. Since 
>> the hook was frozen, so was the notmuch new command. I had 
>> quite a lot of "notmuch new" processes. I assume this meant the 
>> DB was locked all this time for writing. 
> 
> notmuch unlocks the database before running the hook, so I don't 
> understand how a hung hook results in a locked database. If it 
> happens again (or you're motivated to set up a testbed) I'd be 
> interested in the output of 

Well, it results in a locked database because I have this in the 
(Python) hook:

DATABASE = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE)

Soon after that I freeze the new messages. And at the end I thaw 
them out. The hang occurs in between the two, I think.

> Also, is this by chance a network file system? Because those 
> often break locking. 

No - regular hard drive.

>> Now killing all those jobs did not fix the database. It was 
>> still broken. And as we saw the second time round, it was 
>> /really/ broken - it would not even open in read-only mode. 
> 
> That seems like something the Xapian devs (in copy) might be 
> interested in fixing, if you could come up with a simple 
> reproducer. 

I can think of two experiments:

1. Write a hook that opens the database as above, and then just 
does nothing (e.g. while True). Let it run, say, for 24 
hours. (Not sure if the "freeze" part is relevant.

2. Same as the above, but have a cron job that fires "notmuch new" 
every 20 minutes. This will freeze on the database line above (all 
except the first invocation which will be stuck at while True).

After a day of this, check if you can open the database in 
READ_WRITE mode. 

> notmuch could be cleverer about timing out on trying to acquire 
> a lock. I suspect it's a bit delicate to get that right, and 
> I've been hoping the underlying primitives would get a bit more 
> flexible w.r.t. locking. 

I agree having notmuch handle it is not ideal. I was originally 
thinking there should be a default timeout that one can adjust as 
needed. However, when someone does "notmuch new" to build a new 
database, that can take several minutes. And others may have flows 
very different from mine.

At the very least, we probably should know why the DB be clobbered 
at all.

-- 
Don't take life so seriously.  It won't last.


                    /\  /\               /\  /
                   /  \/  \ u e e n     /  \/  a w a z
                       >>>>>>mueen@nawaz.org<<<<<<
                                   anl

 

  reply	other threads:[~2018-09-10 14:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-05  1:00 Notmuch DB Problems mueen
2018-09-05 18:05 ` Jani Nikula
2018-09-07 15:32   ` Mueen Nawaz
2018-09-10 11:01     ` David Bremner
2018-09-10 14:21       ` Mueen Nawaz [this message]
2018-09-10 15:08         ` David Bremner
2018-09-10 15:19           ` Mueen Nawaz
2018-09-10 21:24       ` Olly Betts
2018-09-10 23:45         ` David Bremner
2018-09-12  2:41         ` Mueen Nawaz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874lexe8mg.fsf@nawaz.org \
    --to=mueen@nawaz.org \
    --cc=david@tethera.net \
    --cc=notmuch@notmuchmail.org \
    --cc=xapian-discuss@lists.xapian.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).