changeset 22662:7fe2a998bc1f

director: Add director_max_parallel_moves/kicks settings The director_max_parallel_moves setting controls the default limit, which can still be increased by explicitly using the doveadm director flush --max-parallel" parameter.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 07 Nov 2017 17:36:05 +0200
parents 34765a426c56
children 5524719c299a
files src/director/director-settings.c src/director/director-settings.h src/director/doveadm-connection.c
diffstat 3 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-settings.c	Mon Nov 06 10:36:07 2017 +0200
+++ b/src/director/director-settings.c	Tue Nov 07 17:36:05 2017 +0200
@@ -76,6 +76,8 @@
 	DEF(SET_TIME, director_user_kick_delay),
 	DEF(SET_IN_PORT, director_doveadm_port),
 	DEF(SET_BOOL, director_consistent_hashing),
+	DEF(SET_TIME, director_max_parallel_moves),
+	DEF(SET_TIME, director_max_parallel_kicks),
 	DEF(SET_SIZE, director_output_buffer_size),
 
 	SETTING_DEFINE_LIST_END
@@ -91,6 +93,8 @@
 	.director_user_expire = 60*15,
 	.director_user_kick_delay = 2,
 	.director_doveadm_port = 0,
+	.director_max_parallel_moves = 100,
+	.director_max_parallel_kicks = 100,
 	.director_output_buffer_size = 10 * 1024 * 1024,
 };
 
--- a/src/director/director-settings.h	Mon Nov 06 10:36:07 2017 +0200
+++ b/src/director/director-settings.h	Tue Nov 07 17:36:05 2017 +0200
@@ -15,6 +15,8 @@
 	unsigned int director_user_kick_delay;
 	in_port_t director_doveadm_port;
 	bool director_consistent_hashing;
+	unsigned int director_max_parallel_moves;
+	unsigned int director_max_parallel_kicks;
 	uoff_t director_output_buffer_size;
 };
 
--- a/src/director/doveadm-connection.c	Mon Nov 06 10:36:07 2017 +0200
+++ b/src/director/doveadm-connection.c	Tue Nov 07 17:36:05 2017 +0200
@@ -25,8 +25,6 @@
 #define DOVEADM_HANDSHAKE "VERSION\tdirector-doveadm\t1\t0\n"
 
 #define MAX_VALID_VHOST_COUNT 1000
-#define DEFAULT_MAX_MOVING_USERS 100
-#define DEFAULT_MAX_KICKING_USERS 100
 
 #define DOVEADM_CONNECTION_RING_SYNC_TIMEOUT_MSECS (30*1000)
 
@@ -602,7 +600,8 @@
 	struct ip_addr ip;
 	struct mail_host *const *hosts;
 	unsigned int i = 0, count;
-	unsigned int max_moving_users = DEFAULT_MAX_MOVING_USERS;
+	unsigned int max_moving_users =
+		conn->dir->set->director_max_parallel_moves;
 
 	if (args[0] != NULL && args[1] != NULL &&
 	    (str_to_uint(args[1], &max_moving_users) < 0 ||
@@ -790,7 +789,8 @@
 
 static bool doveadm_cmd_user_kick_run(struct director_kick_cmd *cmd)
 {
-	if (cmd->dir->users_kicking_count >= DEFAULT_MAX_KICKING_USERS)
+	if (cmd->dir->users_kicking_count >=
+	    cmd->dir->set->director_max_parallel_kicks)
 		return FALSE;
 
 	if (cmd->alt)