# HG changeset patch # User Timo Sirainen # Date 1509915716 -7200 # Node ID abe554f10805e66251228e343b2c78068e8f5eaf # Parent 3ada7f87de9f5f78c7cff2936dfa50e4945bf9f0 director: Show in process title how many requests are being delayed. diff -r 3ada7f87de9f -r abe554f10805 src/director/director-request.c --- a/src/director/director-request.c Mon Nov 06 10:57:03 2017 +0200 +++ b/src/director/director-request.c Sun Nov 05 23:01:56 2017 +0200 @@ -267,7 +267,7 @@ } } -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 @@ 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 -r 3ada7f87de9f -r abe554f10805 src/director/director.h --- a/src/director/director.h Mon Nov 06 10:57:03 2017 +0200 +++ b/src/director/director.h Sun Nov 05 23:01:56 2017 +0200 @@ -121,6 +121,8 @@ 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 -r 3ada7f87de9f -r abe554f10805 src/director/main.c --- a/src/director/main.c Mon Nov 06 10:57:03 2017 +0200 +++ b/src/director/main.c Sun Nov 05 23:01:56 2017 +0200 @@ -57,6 +57,8 @@ 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",