MXS-1775 Update statuses the usual way in MMMon
As all other monitors MMMon now only manipulates the pending_status of the monitor object during analysis and only in the end touches the server status.
This commit is contained in:
@ -150,17 +150,14 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
|
||||
if (!mon_connection_is_ok(rval))
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
||||
|
||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
||||
{
|
||||
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
|
||||
@ -174,9 +171,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
return;
|
||||
}
|
||||
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
||||
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
||||
|
||||
MYSQL_ROW row;
|
||||
@ -443,13 +438,17 @@ void MMMonitor::tick()
|
||||
MXS_NOTICE("root server [%s:%i] is no longer Master, let's "
|
||||
"use it again even if it could be a stale master, you have "
|
||||
"been warned!", ptr->server->address, ptr->server->port);
|
||||
|
||||
/* Reset the pending_status. */
|
||||
ptr->pending_status = ptr->server->status;
|
||||
monitor_clear_pending_status(ptr, SERVER_AUTH_ERROR);
|
||||
monitor_set_pending_status(ptr, SERVER_RUNNING);
|
||||
|
||||
/* Set the STALE bit for this server in server struct */
|
||||
server_set_status_nolock(ptr->server, SERVER_STALE_STATUS);
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr->server->status = ptr->pending_status;
|
||||
monitor_set_pending_status(ptr, SERVER_STALE_STATUS);
|
||||
}
|
||||
|
||||
ptr->server->status = ptr->pending_status;
|
||||
}
|
||||
ptr = ptr->next;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user