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