]> git.cworth.org Git - notmuch/commitdiff
CLI/new: drop the write lock to run the pre-new hook.
authorDavid Bremner <david@tethera.net>
Fri, 19 Mar 2021 01:58:02 +0000 (22:58 -0300)
committerDavid Bremner <david@tethera.net>
Fri, 19 Mar 2021 01:58:02 +0000 (22:58 -0300)
This fixes a bug reported in [1]. In principle it could be possible
avoid one of these reopens, but it complicates the logic in main with
respect to creating new databases.

[1]: id:9C1993DF-84BD-4199-A9C8-BADA98498812@bubblegen.co.uk

notmuch-new.c
test/T400-hooks.sh

index 223d68bb2530ed7eb1981e3782721d40f99d254b..8214fb23a81b55af1ae00248e25e06bd1e3d003e 100644 (file)
@@ -1170,9 +1170,19 @@ notmuch_new_command (unused(notmuch_config_t *config), notmuch_database_t *notmu
     }
 
     if (hooks) {
+       /* Drop write lock to run hook */
+       status = notmuch_database_reopen (notmuch, NOTMUCH_DATABASE_MODE_READ_ONLY);
+       if (print_status_database ("notmuch new", notmuch, status))
+           return EXIT_FAILURE;
+
        ret = notmuch_run_hook (notmuch, "pre-new");
        if (ret)
            return EXIT_FAILURE;
+
+       /* acquire write lock again */
+       status = notmuch_database_reopen (notmuch, NOTMUCH_DATABASE_MODE_READ_WRITE);
+       if (print_status_database ("notmuch new", notmuch, status))
+           return EXIT_FAILURE;
     }
 
     notmuch_exit_if_unmatched_db_uuid (notmuch);
index a2b67d59b5de42abdb162e71be8c02025cd23c53..de8e4ba4bfb1c12c459d46cb788637968ac57aeb 100755 (executable)
@@ -159,7 +159,6 @@ EOF
     test_expect_equal_file write.expected write.output
 
     test_begin_subtest "pre-new with write access [${config}]"
-    test_subtest_known_broken
     rm -rf ${HOOK_DIR}
     create_write_hook "pre-new" write.expected write.output $HOOK_DIR
     NOTMUCH_NEW