diff --git a/notmuch-new.c b/notmuch-new.c index 598a2083..e79593cd 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -450,6 +450,12 @@ add_files_recursive (notmuch_database_t *notmuch, fflush (stdout); } + status = notmuch_database_begin_atomic (notmuch); + if (status) { + ret = status; + goto DONE; + } + status = notmuch_database_add_message (notmuch, next, &message); switch (status) { /* success */ @@ -490,6 +496,12 @@ add_files_recursive (notmuch_database_t *notmuch, goto DONE; } + status = notmuch_database_end_atomic (notmuch); + if (status) { + ret = status; + goto DONE; + } + if (message) { notmuch_message_destroy (message); message = NULL; @@ -728,6 +740,9 @@ remove_filename (notmuch_database_t *notmuch, { notmuch_status_t status; notmuch_message_t *message; + status = notmuch_database_begin_atomic (notmuch); + if (status) + return status; message = notmuch_database_find_message_by_filename (notmuch, path); status = notmuch_database_remove_message (notmuch, path); if (status == NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) { @@ -737,6 +752,7 @@ remove_filename (notmuch_database_t *notmuch, } else add_files_state->removed_messages++; notmuch_message_destroy (message); + notmuch_database_end_atomic (notmuch); return status; } diff --git a/test/atomicity b/test/atomicity index 88b39587..eeff6be9 100755 --- a/test/atomicity +++ b/test/atomicity @@ -94,7 +94,6 @@ for ((i = 0; i < $outcount; i++)); do done test_begin_subtest '"notmuch new" is idempotent under arbitrary aborts' -test_subtest_known_broken test_expect_equal_file GDB searchall expectall test_expect_success GDB "detected $outcount>10 abort points" "test $outcount -gt 10"