dovecot-2.2: doveadm director flush: Unless -F parameter is used...

dovecot at dovecot.org dovecot at dovecot.org
Fri May 15 13:52:36 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/2336a3127a0f
changeset: 18711:2336a3127a0f
user:      Timo Sirainen <tss at iki.fi>
date:      Fri May 15 16:50:27 2015 +0300
description:
doveadm director flush: Unless -F parameter is used, do the flush by moving users.
User moving causes the users to be properly kicked out of the old backends
before new connections are made to the new backends. This way the user isn't
accessed simultaneously by different backends.

diffstat:

 src/doveadm/doveadm-director.c |  17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diffs (62 lines):

diff -r 5175f8e600e9 -r 2336a3127a0f src/doveadm/doveadm-director.c
--- a/src/doveadm/doveadm-director.c	Fri May 15 16:46:14 2015 +0300
+++ b/src/doveadm/doveadm-director.c	Fri May 15 16:50:27 2015 +0300
@@ -24,7 +24,7 @@
 	const char *tag;
 	struct istream *input;
 	bool explicit_socket_path;
-	bool hash_map, user_map;
+	bool hash_map, user_map, force_flush;
 };
 
 struct user_list {
@@ -106,6 +106,9 @@
 		case 'f':
 			ctx->users_path = optarg;
 			break;
+		case 'F':
+			ctx->force_flush = TRUE;
+			break;
 		case 'h':
 			ctx->hash_map = TRUE;
 			break;
@@ -549,7 +552,8 @@
 {
 	const char *line;
 
-	director_send(ctx, "HOST-FLUSH\n");
+	director_send(ctx, ctx->force_flush ?
+		      "HOST-FLUSH\n" : "HOST-RESET-USERS\n");
 
 	line = i_stream_read_next_line(ctx->input);
 	if (line == NULL) {
@@ -572,7 +576,7 @@
 	const char *host, *line;
 	int ret;
 
-	ctx = cmd_director_init(argc, argv, "a:", cmd_director_flush);
+	ctx = cmd_director_init(argc, argv, "a:F", cmd_director_flush);
 	host = argv[optind++];
 	if (host == NULL || argv[optind] != NULL)
 		director_cmd_help(cmd_director_flush);
@@ -593,8 +597,9 @@
 	}
 
 	for (i = 0; i < ips_count; i++) {
-		director_send(ctx,
-			t_strdup_printf("HOST-FLUSH\t%s\n", net_ip2addr(&ip)));
+		director_send(ctx, t_strdup_printf("%s\t%s\n",
+			ctx->force_flush ? "HOST-FLUSH" : "HOST-RESET-USERS",
+			net_ip2addr(&ip)));
 	}
 	for (i = 0; i < ips_count; i++) {
 		line = i_stream_read_next_line(ctx->input);
@@ -779,7 +784,7 @@
 	{ cmd_director_kick, "director kick",
 	  "[-a <director socket path>] <user>" },
 	{ cmd_director_flush, "director flush",
-	  "[-a <director socket path>] <host>|all" },
+	  "[-a <director socket path>] [-f] <host>|all" },
 	{ cmd_director_dump, "director dump",
 	  "[-a <director socket path>]" },
 	{ cmd_director_ring_add, "director ring add",


More information about the dovecot-cvs mailing list