X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase.cc;h=f395061e3a73f91b3324cc97063e7ba2c149579f;hp=d79cc3006d29a204aaa54a762aa30e0a4734ded7;hb=29f125212619ebca8621dd2106b412b22e1b6d22;hpb=cb6cc296e27fdab85faa4bdd670eda2e0c53b8c2 diff --git a/lib/database.cc b/lib/database.cc index d79cc300..f395061e 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -922,6 +922,12 @@ notmuch_database_compact (const char *path, goto DONE; } + /* Unconditionally attempt to remove old work-in-progress database (if + * any). This is "protected" by database lock. If this fails due to write + * errors (etc), the following code will fail and provide error message. + */ + (void) rmtree (compact_xapian_path); + try { NotmuchCompactor compactor (status_cb, closure); @@ -936,19 +942,27 @@ notmuch_database_compact (const char *path, } if (rename (xapian_path, backup_path)) { - fprintf (stderr, "Error moving old database out of the way\n"); + fprintf (stderr, "Error moving %s to %s: %s\n", + xapian_path, backup_path, strerror (errno)); ret = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } if (rename (compact_xapian_path, xapian_path)) { - fprintf (stderr, "Error moving compacted database\n"); + fprintf (stderr, "Error moving %s to %s: %s\n", + compact_xapian_path, xapian_path, strerror (errno)); ret = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } - if (! keep_backup) - rmtree (backup_path); + if (! keep_backup) { + if (rmtree (backup_path)) { + fprintf (stderr, "Error removing old database %s: %s\n", + backup_path, strerror (errno)); + ret = NOTMUCH_STATUS_FILE_ERROR; + goto DONE; + } + } DONE: if (notmuch)