From: Timo Sirainen Date: Mon, 5 Jul 2010 14:45:06 +0000 (+0100) Subject: dsync: If verbosity is enabled, log why desyncing was caused. X-Git-Tag: 2.0.rc2~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa41a5b74a3dbaaec3e1bc0042d3183f867fa9d2;p=thirdparty%2Fdovecot%2Fcore.git dsync: If verbosity is enabled, log why desyncing was caused. --HG-- branch : HEAD --- diff --git a/src/dsync/dsync-brain.c b/src/dsync/dsync-brain.c index b46098782d..6d9d537f2a 100644 --- a/src/dsync/dsync-brain.c +++ b/src/dsync/dsync-brain.c @@ -34,6 +34,11 @@ dsync_brain_init(struct dsync_worker *src_worker, brain->verbose = (flags & DSYNC_BRAIN_FLAG_VERBOSE) != 0; brain->backup = (flags & DSYNC_BRAIN_FLAG_BACKUP) != 0; brain->stdout_tty = isatty(STDOUT_FILENO) > 0; + + if ((flags & DSYNC_BRAIN_FLAG_VERBOSE) != 0) { + dsync_worker_set_verbose(src_worker); + dsync_worker_set_verbose(dest_worker); + } return brain; } diff --git a/src/dsync/dsync-worker-local.c b/src/dsync/dsync-worker-local.c index 26e10d47ae..332ffd2c0f 100644 --- a/src/dsync/dsync-worker-local.c +++ b/src/dsync/dsync-worker-local.c @@ -1272,9 +1272,21 @@ static void local_worker_mailbox_close(struct local_dsync_worker *worker) if (mailbox_transaction_commit_get_changes(&ext_trans, &changes) < 0) dsync_worker_set_failure(&worker->worker); else { - if (changes.ignored_modseq_changes != 0 || - !has_expected_save_uids(worker, &changes)) + if (changes.ignored_modseq_changes != 0) { + if (worker->worker.verbose) { + i_info("%s: Ignored %u modseq changes", + mailbox_get_vname(worker->selected_box), + changes.ignored_modseq_changes); + } worker->worker.unexpected_changes = TRUE; + } + if (!has_expected_save_uids(worker, &changes)) { + if (worker->worker.verbose) { + i_info("%s: Couldn't keep all uids", + mailbox_get_vname(worker->selected_box)); + } + worker->worker.unexpected_changes = TRUE; + } pool_unref(&changes.pool); } array_clear(&worker->saved_uids); diff --git a/src/dsync/dsync-worker-private.h b/src/dsync/dsync-worker-private.h index 8e6455583b..86eddcde9d 100644 --- a/src/dsync/dsync-worker-private.h +++ b/src/dsync/dsync-worker-private.h @@ -79,6 +79,7 @@ struct dsync_worker { unsigned int readonly:1; unsigned int failed:1; + unsigned int verbose:1; unsigned int unexpected_changes:1; }; diff --git a/src/dsync/dsync-worker.c b/src/dsync/dsync-worker.c index 7d9fc7b847..dddf0ce464 100644 --- a/src/dsync/dsync-worker.c +++ b/src/dsync/dsync-worker.c @@ -17,6 +17,11 @@ void dsync_worker_set_readonly(struct dsync_worker *worker) worker->readonly = TRUE; } +void dsync_worker_set_verbose(struct dsync_worker *worker) +{ + worker->verbose = TRUE; +} + void dsync_worker_set_input_callback(struct dsync_worker *worker, io_callback_t *callback, void *context) { diff --git a/src/dsync/dsync-worker.h b/src/dsync/dsync-worker.h index 34939c4bee..951a25cf97 100644 --- a/src/dsync/dsync-worker.h +++ b/src/dsync/dsync-worker.h @@ -35,6 +35,8 @@ void dsync_worker_deinit(struct dsync_worker **worker); /* Set this worker as read-only. All attempted changes are ignored. */ void dsync_worker_set_readonly(struct dsync_worker *worker); +/* Log verbosely */ +void dsync_worker_set_verbose(struct dsync_worker *worker); /* If any function returns with "waiting for more data", the given callback gets called when more data is available. */ diff --git a/src/dsync/dsync.c b/src/dsync/dsync.c index 5545490a83..a602386a35 100644 --- a/src/dsync/dsync.c +++ b/src/dsync/dsync.c @@ -317,7 +317,7 @@ int main(int argc, char *argv[]) if (unexpected_changes && (brain_flags & DSYNC_BRAIN_FLAG_VERBOSE) != 0) { i_info("Mailbox changes caused a desync. " - "You might want to run dsync again."); + "You may want to run dsync again."); } mail_storage_service_deinit(&storage_service);