From ac174437f3a42cf4f74280c8111f1a498bc1ff08 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Sat, 28 Nov 2015 16:38:39 +0200 Subject: [PATCH] Master/slave bits now handled in one place The master and slave bits were previously set in more then one place. This spread out the handling of those status bits and now all replication related bits are set in one place. --- server/modules/monitor/galeramon.c | 51 ++++++++++++++---------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/server/modules/monitor/galeramon.c b/server/modules/monitor/galeramon.c index 72f78d03b..192f7e697 100644 --- a/server/modules/monitor/galeramon.c +++ b/server/modules/monitor/galeramon.c @@ -316,9 +316,6 @@ monitorDatabase(MONITOR *mon, MONITOR_SERVERS *database) mon_log_connect_error(database, rval); } - server_clear_status(&temp_server, SERVER_MASTER); - server_clear_status(&temp_server, SERVER_MASTER_STICKINESS); - server_clear_status(&temp_server, SERVER_SLAVE); server_transfer_status(database->server, &temp_server); return; @@ -553,40 +550,38 @@ monitorMain(void *arg) while (ptr) { - if (!SERVER_IS_JOINED(ptr->server) || SERVER_IN_MAINT(ptr->server)) + const int repl_bits = (SERVER_SLAVE | SERVER_MASTER | SERVER_MASTER_STICKINESS); + if (SERVER_IS_JOINED(ptr->server)) { - ptr = ptr->next; - continue; - } - - if (handle->master) - { - if (ptr != handle->master) + if (handle->master) { - /* set the Slave role and clear master stickiness */ - server_clear_set_status(ptr->server, (SERVER_SLAVE|SERVER_MASTER|SERVER_MASTER_STICKINESS), SERVER_SLAVE); - } - else - { - if (candidate_master && handle->master->server->node_id != candidate_master->server->node_id) + if (ptr != handle->master) { - /* set master role and master stickiness */ - server_clear_set_status(ptr->server, - (SERVER_SLAVE|SERVER_MASTER|SERVER_MASTER_STICKINESS), - (SERVER_MASTER|SERVER_MASTER_STICKINESS)); + /* set the Slave role and clear master stickiness */ + server_clear_set_status(ptr->server, repl_bits, SERVER_SLAVE); } else { - /* set master role and clear master stickiness */ - server_clear_set_status(ptr->server, - (SERVER_SLAVE|SERVER_MASTER|SERVER_MASTER_STICKINESS), - SERVER_MASTER); + if (candidate_master && + handle->master->server->node_id != candidate_master->server->node_id) + { + /* set master role and master stickiness */ + server_clear_set_status(ptr->server, repl_bits, + (SERVER_MASTER | SERVER_MASTER_STICKINESS)); + } + else + { + /* set master role and clear master stickiness */ + server_clear_set_status(ptr->server, repl_bits, SERVER_MASTER); + } } } + is_cluster++; + } + else + { + server_clear_set_status(ptr->server, repl_bits, 0); } - - is_cluster++; - ptr = ptr->next; }