From: Timo Sirainen Date: Sun, 5 Nov 2017 21:01:56 +0000 (+0200) Subject: director: Show in process title how many requests are being delayed. X-Git-Tag: 2.2.34~235 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2d95f36875bf9a0f1b973f4b892e8c8523e4693d;p=thirdparty%2Fdovecot%2Fcore.git director: Show in process title how many requests are being delayed. --- diff --git a/src/director/director-request.c b/src/director/director-request.c index 2800308b7f..766be25069 100644 --- a/src/director/director-request.c +++ b/src/director/director-request.c @@ -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; +} diff --git a/src/director/director.h b/src/director/director.h index 7682e610b6..7a4bdaf2c0 100644 --- a/src/director/director.h +++ b/src/director/director.h @@ -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; diff --git a/src/director/main.c b/src/director/main.c index a89a8e13fe..6445e582d7 100644 --- a/src/director/main.c +++ b/src/director/main.c @@ -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",