changeset 22654:abe554f10805

director: Show in process title how many requests are being delayed.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 05 Nov 2017 23:01:56 +0200
parents 3ada7f87de9f
children c98a2d05c702
files src/director/director-request.c src/director/director.h src/director/main.c
diffstat 3 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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;
+}
--- 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;
--- 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",