changeset 20286:4d926d1e9164

director: Fixed ignoring an obsolete up/down change while host is desynced.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 05 Jun 2016 14:54:05 +0300
parents f8b7ef642ad3
children 16fb9651df56
files src/director/director-connection.c
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-connection.c	Sun Jun 05 04:29:00 2016 +0300
+++ b/src/director/director-connection.c	Sun Jun 05 14:54:05 2016 +0300
@@ -927,6 +927,11 @@
 
 			str_printfa(str, "director(%s): Host %s is being updated before previous update had finished (",
 				  conn->name, net_ip2addr(&host->ip));
+			if (host->down != down &&
+			    host->last_updown_change > last_updown_change) {
+				/* our host has a newer change. preserve it. */
+				down = host->down;
+			}
 			if (host->down != down) {
 				if (host->down)
 					str_append(str, "down -> up");
@@ -942,10 +947,6 @@
 			str_append(str, ") - ");
 
 			vhost_count = I_MIN(vhost_count, host->vhost_count);
-			if (host->down != down) {
-				if (host->last_updown_change <= last_updown_change)
-					down = host->last_updown_change;
-			}
 			last_updown_change = I_MAX(last_updown_change,
 						   host->last_updown_change);
 			str_printfa(str, "setting to state=%s vhosts=%u",