dovecot-2.0-sslstream: dsync: Wait for all saves to finish befor...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 02:56:23 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/513cff2a7008
changeset: 10324:513cff2a7008
user: Timo Sirainen <tss at iki.fi>
date: Fri Nov 13 16:54:48 2009 -0500
description:
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.
diffstat:
2 files changed, 12 insertions(+)
src/dsync/dsync-brain-private.h | 2 ++
src/dsync/dsync-brain.c | 10 ++++++++++
diffs (32 lines):
diff -r 00aba806af0b -r 513cff2a7008 src/dsync/dsync-brain-private.h
--- 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 @@ enum dsync_state {
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,
diff -r 00aba806af0b -r 513cff2a7008 src/dsync/dsync-brain.c
--- 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 @@ void dsync_brain_sync(struct dsync_brain
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++;
More information about the dovecot-cvs
mailing list