nmhive.py: Use per-request database connections.
authorW. Trevor King <wking@tremily.us>
Sun, 21 Sep 2014 20:52:27 +0000 (13:52 -0700)
committerW. Trevor King <wking@tremily.us>
Sun, 21 Sep 2014 20:52:27 +0000 (13:52 -0700)
commita98096f129165be003294eaa5ad3596931c58ae7
treec1e1e544d15b917b353e970c105270c84daa4c6a
parentbdbfab1fca947861c23887adc48a126f12578f39
nmhive.py: Use per-request database connections.

On #notmuch, Austin Clements just said:

  Opening the database always gives you a consistent snapshot, so you
  won't see changes unless you close and reopen it.  However, opening
  in read-only mode is quite cheap.

so I'm going to drop my global connection in favor of per-request
connections.  This also allows me to cleanup after aborted atomic
transactions (when I implement the POST backend), because notmuch does
not currently expose Xapian::WritableDatabase::cancel_transaction.  It
also allows other readers to see the new data, since notmuch only
commits changes when the database connection is closed.  Finally,
David Bremner pointed out that holding the read/write lock for an
extended period of time is just bad form.
nmhive.py