]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Make sure error is set on sync & commit failures
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 19 Jun 2018 09:31:43 +0000 (12:31 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 26 Jun 2018 06:33:50 +0000 (09:33 +0300)
This avoids "BUG: Unknown internal index error" after view is marked
inconsistent or after index is deleted.

src/lib-index/mail-index-sync.c
src/lib-index/mail-index-transaction.c

index 62e5a86005755f878955735a902c035b47949b6d..40fac37fd7ec935ccd98b067f25f1f576f321ec7 100644 (file)
@@ -850,6 +850,7 @@ int mail_index_sync_commit(struct mail_index_sync_ctx **_ctx)
                   (ctx->flags & MAIL_INDEX_SYNC_FLAG_TRY_DELETING_INDEX) == 0) {
                /* another process just marked the index deleted.
                   finish the sync, but return error. */
+               mail_index_set_error_nolog(index, "Index is marked deleted");
                ret = -1;
        }
 
index d2ec42b83bd123ad3eaf272d8baca4fa49026be8..aa9f5307d4b73d16305ffa6a71b4ecfdddce4038 100644 (file)
@@ -284,6 +284,7 @@ int mail_index_transaction_commit_full(struct mail_index_transaction **_t,
        bool index_undeleted = t->index_undeleted;
 
        if (mail_index_view_is_inconsistent(t->view)) {
+               mail_index_set_error_nolog(index, "View is inconsistent");
                mail_index_transaction_rollback(_t);
                return -1;
        }
@@ -292,6 +293,7 @@ int mail_index_transaction_commit_full(struct mail_index_transaction **_t,
                    (t->view->index->index_delete_requested &&
                     !t->view->index->syncing)) {
                        /* no further changes allowed */
+                       mail_index_set_error_nolog(index, "Index is marked deleted");
                        mail_index_transaction_rollback(_t);
                        return -1;
                }