[PATCH v6 00/17] Fix 'notmuch new' atomicity issues
Austin Clements
amdragon at MIT.EDU
Sat Jun 11 13:04:26 PDT 2011
Here's the reworked patch series that uses atomic sections more
heavily rather than changing the removal API. This is atomic-new-v6
on http://awakening.csail.mit.edu/git/notmuch.git .
(I was planning to make this series on Monday while stuck on a plane,
but an opportunity presented itself when I needed something better to
do than fix the sink. As a result, if you can look over this before
Monday, I can use that time to address any further comments.)
The beginning of the sequence---"test: Fix message when skipping
test_expect_equal* tests" through "new: Defer updating directory
mtimes until the end."---has not changed besides than the minor things
you pointed out earlier. Here's a quick summary of the differences in
the rest of the sequence:
lib: Add notmuch_database_{begin,end}_atomic.
Rebased but otherwise identical.
lib: Add support for nested atomic sections.
New.
lib: Indicate if there are more filenames after removal.
Rebased but otherwise identical.
lib: Remove message document directly after removing the last file
name.
New. Supersedes the patches that rewrote
notmuch_database_remove_message and made sync delete messages.
lib: Add an API to find a message by filename.
Culled from "lib: Add API's to find by filename and ..." in the old
series. What I kept is identical.
lib: Wrap notmuch_database_add_message in an atomic section.
New.
new: Cleanup. Put removed/renamed message count in add_files_state_t.
new: Cleanup. De-duplicate file name removal code.
Both new, but closely related to previous remove_filename patch.
new: Synchronize maildir flags eagerly.
New, but very closely related to previous patch of the same name.
This patch is simpler now because of the previous two cleanups.
new: Wrap adding and removing messages in atomic sections.
Rebased and added an atomic section around removal.
lib: Improve notmuch_database_{add,remove}_message documentation.
New.
Ultimately, I still think the existing removal API is weird because it
forces you to do things like lookup a message by file name just in
case you need that message object after removal tells you that it
didn't actually remove the message. But I don't know what to do about
it that isn't equally weird.
More information about the notmuch
mailing list