]> 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)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 6 Nov 2017 18:09:13 +0000 (20:09 +0200)
src/director/director-request.c
src/director/director.h
src/director/main.c

index fb78c29a853c467f2aac076e7eb07a41ec1624fa..975ec5a9fbe69882b8741dd6bd9aeaa5c2a77717 100644 (file)
@@ -272,7 +272,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;
@@ -336,3 +336,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 fff719ad48d19a5d873a0f947c8123b0e87824ca..1272c0d7c1ca87713c7b9ab34833f3056f2c30df 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 ff0a857480ea69c7e38d9eec28c5486f360de78b..d45b25b1d9ec2c19886a50da27ee2ac1973b17ae 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, ", %"PRIu64" req/s",