]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Show in process title how many requests are being delayed.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sun, 5 Nov 2017 21:01:56 +0000 (23:01 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 7 Nov 2017 19:25:59 +0000 (21:25 +0200)
src/director/director-request.c
src/director/director.h
src/director/main.c

index 2800308b7f4fc2640d556639a360c80457489f3a..766be250692bec90b5216376c34335dae52f33de 100644 (file)
@@ -267,7 +267,7 @@ director_request_existing(struct director_request *request, struct user *user)
        }
 }
 
-bool director_request_continue(struct director_request *request)
+static bool director_request_continue_real(struct director_request *request)
 {
        struct director *dir = request->dir;
        struct mail_host *host;
@@ -331,3 +331,17 @@ bool director_request_continue(struct director_request *request)
        director_request_free(request);
        return TRUE;
 }
+
+bool director_request_continue(struct director_request *request)
+{
+       if (request->delay_reason != REQUEST_DELAY_NONE) {
+               i_assert(request->dir->requests_delayed_count > 0);
+               request->dir->requests_delayed_count--;
+       }
+       if (!director_request_continue_real(request)) {
+               i_assert(request->delay_reason != REQUEST_DELAY_NONE);
+               request->dir->requests_delayed_count++;
+               return FALSE;
+       }
+       return TRUE;
+}
index 7682e610b626016603305d8b1b052119ac9e1867..7a4bdaf2c0864f643d694c9d898f65a8ab3b0958 100644 (file)
@@ -121,6 +121,8 @@ struct director {
        struct mail_host_list *orig_config_hosts;
        /* Number of users currently being moved */
        unsigned int users_moving_count;
+       /* Number of requests currently delayed */
+       unsigned int requests_delayed_count;
 
        /* these requests are waiting for directors to be in synced */
        ARRAY(struct director_request *) pending_requests;
index a89a8e13feefff49cd8da3ec57f872d33d257295..6445e582d7e0c141fc58ce8bf3327e28ee4139f2 100644 (file)
@@ -57,6 +57,8 @@ static void director_refresh_proctitle_timeout(void *context ATTR_UNUSED)
 
        str = t_str_new(64);
        str_printfa(str, "[%u users", director_total_users_count());
+       if (director->requests_delayed_count > 0)
+               str_printfa(str, ", %u delayed", director->requests_delayed_count);
        if (director->users_moving_count > 0)
                str_printfa(str, ", %u moving", director->users_moving_count);
        str_printfa(str, ", %lu req/s",