# HG changeset patch # User Timo Sirainen # Date 1509016730 -10800 # Node ID 0281041d5067c8dcdc9d5287d7338ff56f2eb92f # Parent 8623737c012993212ca9ec0d719bd1e5d96cd6bd director: Track show long the last ring sync took. diff -r 8623737c0129 -r 0281041d5067 src/director/director-connection.c --- a/src/director/director-connection.c Thu Oct 26 14:07:56 2017 +0300 +++ b/src/director/director-connection.c Thu Oct 26 14:18:50 2017 +0300 @@ -1468,6 +1468,10 @@ dir_debug("Ring is synced (%s sent seq=%u, hosts_hash=%u)", conn->name, seq, mail_hosts_hash(dir->mail_hosts)); + int sync_msecs = + timeval_diff_msecs(&ioloop_timeval, &dir->last_sync_start_time); + if (sync_msecs >= 0) + dir->last_sync_msecs = sync_msecs; director_set_ring_synced(dir); } } else { diff -r 8623737c0129 -r 0281041d5067 src/director/director.c --- a/src/director/director.c Thu Oct 26 14:07:56 2017 +0300 +++ b/src/director/director.c Thu Oct 26 14:18:50 2017 +0300 @@ -370,8 +370,10 @@ { string_t *str; - if (host == dir->self_host) + if (host == dir->self_host) { dir->last_sync_sent_ring_change_counter = dir->ring_change_counter; + dir->last_sync_start_time = ioloop_timeval; + } str = t_str_new(128); str_printfa(str, "SYNC\t%s\t%u\t%u", diff -r 8623737c0129 -r 0281041d5067 src/director/director.h --- a/src/director/director.h Thu Oct 26 14:07:56 2017 +0300 +++ b/src/director/director.h Thu Oct 26 14:18:50 2017 +0300 @@ -137,9 +137,15 @@ unsigned int sync_seq; unsigned int ring_change_counter; unsigned int last_sync_sent_ring_change_counter; + /* Timestamp when the last SYNC was initiated by us */ + struct timeval last_sync_start_time; /* the lowest minor version supported by the ring */ unsigned int ring_min_version; + /* Timestamp when ring became synced or unsynced the last time */ time_t ring_last_sync_time; + /* How many milliseconds it took for the last SYNC to travel through + the ring. */ + unsigned int last_sync_msecs; time_t ring_first_alone;