]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Log info line whenever a director is added/removed from ring
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Sep 2017 14:29:48 +0000 (17:29 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 15 Sep 2017 09:00:26 +0000 (12:00 +0300)
This can help with debugging problems.

src/director/director-connection.c
src/director/director.c
src/director/director.h
src/director/doveadm-connection.c

index 59b7f98e3c5d2aaaed956916c951e7eb8feb461d..0c0a36d9107c0a260020ac6220ce059defaa53d0 100644 (file)
@@ -744,6 +744,7 @@ static bool director_cmd_director(struct director_connection *conn,
        struct director_host *host;
        struct ip_addr ip;
        in_port_t port;
+       bool log_add = FALSE;
 
        if (!director_args_parse_ip_port(conn, args, &ip, &port))
                return FALSE;
@@ -767,6 +768,7 @@ static bool director_cmd_director(struct director_connection *conn,
        } else {
                /* save the director and forward it */
                host = director_host_add(conn->dir, &ip, port);
+               log_add = TRUE;
        }
        /* just forward this to the entire ring until it reaches back to
           itself. some hosts may see this twice, but that's the only way to
@@ -782,7 +784,7 @@ static bool director_cmd_director(struct director_connection *conn,
                          "Not forwarding it since it's probably crashed.");
        } else {
                director_notify_ring_added(host,
-                       director_connection_get_host(conn));
+                       director_connection_get_host(conn), log_add);
        }
        return TRUE;
 }
index 17d531b219352b2f848f45778afb95351cca23e1..0167a381200129c1d5c5c421aa2b7b6ac53cf729 100644 (file)
@@ -476,10 +476,15 @@ void director_sync_thaw(struct director *dir)
 }
 
 void director_notify_ring_added(struct director_host *added_host,
-                               struct director_host *src)
+                               struct director_host *src, bool log)
 {
        const char *cmd;
 
+       if (log) {
+               i_info("Adding director %s to ring (requested by %s)",
+                      added_host->name, src->name);
+       }
+
        added_host->dir->ring_change_counter++;
        cmd = t_strdup_printf("DIRECTOR\t%s\t%u\n",
                              net_ip2addr(&added_host->ip), added_host->port);
@@ -513,6 +518,9 @@ void director_ring_remove(struct director_host *removed_host,
        unsigned int i, count;
        const char *cmd;
 
+       i_info("Removing director %s from ring (requested by %s)",
+              removed_host->name, src->name);
+
        if (removed_host->self) {
                /* others will just disconnect us */
                return;
index 6ef08adaf01293b6f353a02907d4c51c8ec02c5a..eb8df42472b3ed969c94db2ef9bd1f29f7518a67 100644 (file)
@@ -181,7 +181,7 @@ void director_sync_send(struct director *dir, struct director_host *host,
 bool director_resend_sync(struct director *dir);
 
 void director_notify_ring_added(struct director_host *added_host,
-                               struct director_host *src);
+                               struct director_host *src, bool log);
 void director_ring_remove(struct director_host *removed_host,
                          struct director_host *src);
 
index 9485c18acd1407623fcd85c0c3d2c1c53d317a34..1e51ede247b5f1cd07a1f5ea2d048e16dd85247e 100644 (file)
@@ -259,7 +259,7 @@ doveadm_cmd_director_add(struct doveadm_connection *conn,
 
        if (director_host_lookup(conn->dir, &ip, port) == NULL) {
                host = director_host_add(conn->dir, &ip, port);
-               director_notify_ring_added(host, conn->dir->self_host);
+               director_notify_ring_added(host, conn->dir->self_host, TRUE);
        }
        o_stream_nsend(conn->output, "OK\n", 3);
        return DOVEADM_DIRECTOR_CMD_RET_OK;