Mercurial > dovecot > core-2.2
changeset 10323:513cff2a7008 HEAD
dsync: Wait for all saves to finish before updating mailboxes' metadata.
The mailbox updating could try closing the same mailbox that still has an
unfinished save.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 13 Nov 2009 16:54:48 -0500 |
parents | 00aba806af0b |
children | 05893dd71338 |
files | src/dsync/dsync-brain-private.h src/dsync/dsync-brain.c |
diffstat | 2 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dsync/dsync-brain-private.h Fri Nov 13 16:53:37 2009 -0500 +++ b/src/dsync/dsync-brain-private.h Fri Nov 13 16:54:48 2009 -0500 @@ -8,6 +8,8 @@ DSYNC_STATE_GET_MAILBOXES = 0, DSYNC_STATE_SYNC_MAILBOXES, DSYNC_STATE_SYNC_MSGS, + DSYNC_STATE_SYNC_MSGS_FLUSH, + DSYNC_STATE_SYNC_MSGS_FLUSH2, DSYNC_STATE_SYNC_UPDATE_MAILBOX, DSYNC_STATE_SYNC_FLUSH, DSYNC_STATE_SYNC_FLUSH2,
--- a/src/dsync/dsync-brain.c Fri Nov 13 16:53:37 2009 -0500 +++ b/src/dsync/dsync-brain.c Fri Nov 13 16:54:48 2009 -0500 @@ -387,6 +387,16 @@ case DSYNC_STATE_SYNC_MSGS: dsync_brain_sync_msgs(brain); break; + case DSYNC_STATE_SYNC_MSGS_FLUSH: + /* wait until all saves are done, so we don't try to close + the mailbox too early */ + dsync_worker_finish(brain->src_worker, + dsync_brain_worker_finished, brain); + dsync_worker_finish(brain->dest_worker, + dsync_brain_worker_finished, brain); + break; + case DSYNC_STATE_SYNC_MSGS_FLUSH2: + break; case DSYNC_STATE_SYNC_UPDATE_MAILBOX: dsync_brain_msg_sync_update_mailbox(brain); brain->state++;