Assign Relay Master only to running servers
The Relay Master status was set for servers that were down. The check for valid master and node IDs was missing which caused a false positive.
This commit is contained in:
parent
da9c7db231
commit
ff7634113b
@ -719,6 +719,7 @@ monitorDatabase(MONITOR *mon, MONITOR_SERVERS *database)
|
|||||||
/* Also clear M/S state in both server and monitor server pending struct */
|
/* Also clear M/S state in both server and monitor server pending struct */
|
||||||
server_clear_status(database->server, SERVER_SLAVE);
|
server_clear_status(database->server, SERVER_SLAVE);
|
||||||
server_clear_status(database->server, SERVER_MASTER);
|
server_clear_status(database->server, SERVER_MASTER);
|
||||||
|
server_clear_status(database->server, SERVER_RELAY_MASTER);
|
||||||
monitor_clear_pending_status(database, SERVER_SLAVE);
|
monitor_clear_pending_status(database, SERVER_SLAVE);
|
||||||
monitor_clear_pending_status(database, SERVER_MASTER);
|
monitor_clear_pending_status(database, SERVER_MASTER);
|
||||||
monitor_clear_pending_status(database, SERVER_RELAY_MASTER);
|
monitor_clear_pending_status(database, SERVER_RELAY_MASTER);
|
||||||
@ -1207,7 +1208,8 @@ monitorMain(void *arg)
|
|||||||
MYSQL_SERVER_INFO *serv_info = hashtable_fetch(handle->server_info, ptr->server->unique_name);
|
MYSQL_SERVER_INFO *serv_info = hashtable_fetch(handle->server_info, ptr->server->unique_name);
|
||||||
ss_dassert(serv_info);
|
ss_dassert(serv_info);
|
||||||
|
|
||||||
if (getSlaveOfNodeId(mon->databases, ptr->server->node_id) &&
|
if (ptr->server->node_id > 0 && ptr->server->master_id > 0 &&
|
||||||
|
getSlaveOfNodeId(mon->databases, ptr->server->node_id) &&
|
||||||
getServerByNodeId(mon->databases, ptr->server->master_id) &&
|
getServerByNodeId(mon->databases, ptr->server->master_id) &&
|
||||||
(!handle->multimaster || serv_info->group == 0))
|
(!handle->multimaster || serv_info->group == 0))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user