]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Add director_max_parallel_moves/kicks settings
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 7 Nov 2017 15:36:05 +0000 (17:36 +0200)
committerTimo Sirainen <tss@dovecot.fi>
Tue, 7 Nov 2017 23:40:43 +0000 (01:40 +0200)
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.

src/director/director-settings.c
src/director/director-settings.h
src/director/doveadm-connection.c

index 3a3395c6942e6fda7af57c7cbe9a5aa859b00b01..281818674a9d80f3206b651d0ef9837df7f7992c 100644 (file)
@@ -74,6 +74,8 @@ static const struct setting_define director_setting_defines[] = {
        DEF(SET_STR, director_flush_socket),
        DEF(SET_TIME, director_user_expire),
        DEF(SET_TIME, director_user_kick_delay),
+       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
@@ -88,6 +90,8 @@ const struct director_settings director_default_settings = {
        .director_flush_socket = "",
        .director_user_expire = 60*15,
        .director_user_kick_delay = 2,
+       .director_max_parallel_moves = 100,
+       .director_max_parallel_kicks = 100,
        .director_output_buffer_size = 10 * 1024 * 1024,
 };
 
index f2093104a0347e6978418cf1a6bdfdd56af5a712..f18078901e7e5aec533855239a1cb1f1d403fa70 100644 (file)
@@ -13,6 +13,8 @@ struct director_settings {
 
        unsigned int director_user_expire;
        unsigned int director_user_kick_delay;
+       unsigned int director_max_parallel_moves;
+       unsigned int director_max_parallel_kicks;
        uoff_t director_output_buffer_size;
 };
 
index 43a3c08be5269cd19fd0ff9854fe3c405ca272a9..b7bacd146c20a9348614fe891f4fe4eb81bd9ba6 100644 (file)
@@ -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)
 
@@ -600,7 +598,8 @@ doveadm_cmd_host_reset_users(struct doveadm_connection *conn,
        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 ||
@@ -798,7 +797,8 @@ static void doveadm_kick_cmd_free(struct director_kick_cmd **_cmd)
 
 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)