MXS-1775 Handle connection error the same way
All monitors (but for MariaDBMon) now handle connection errors in the same manner. An exception is MMMon that modifies both the server status and the monitor status. However, in fact, all other monitors do it the wrong way and update the server status directly instead of only the monitor status that then at the end of the loop should be copied to the server status.
This commit is contained in:
@ -60,11 +60,18 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
|
||||
if (!mon_connection_is_ok(rval))
|
||||
{
|
||||
/** Failed to connect to the database */
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
|
||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
||||
{
|
||||
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
|
||||
monitored_server->server->node_id = -1;
|
||||
|
||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
||||
{
|
||||
|
||||
@ -263,8 +263,11 @@ static bool using_xtrabackup(MXS_MONITORED_SERVER *database, const char* server_
|
||||
void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
{
|
||||
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
|
||||
|
||||
if (!mon_connection_is_ok(rval))
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
|
||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
||||
{
|
||||
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
@ -276,8 +279,6 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
|
||||
monitored_server->server->node_id = -1;
|
||||
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
|
||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
||||
{
|
||||
mon_log_connect_error(monitored_server, rval);
|
||||
|
||||
@ -131,6 +131,8 @@ void GRMon::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
|
||||
if (!mon_connection_is_ok(rval))
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
|
||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
||||
{
|
||||
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
@ -142,8 +144,6 @@ void GRMon::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
|
||||
monitored_server->server->node_id = -1;
|
||||
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
|
||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
||||
{
|
||||
mon_log_connect_error(monitored_server, rval);
|
||||
|
||||
@ -150,23 +150,21 @@ 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);
|
||||
}
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
||||
else
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
|
||||
/* Also clear M/S state in both server and monitor server pending struct */
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_SLAVE);
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_MASTER);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_SLAVE);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_MASTER);
|
||||
|
||||
/* Clean addition status too */
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_STALE_STATUS);
|
||||
monitor_clear_pending_status(monitored_server, SERVER_STALE_STATUS);
|
||||
monitored_server->server->node_id = -1;
|
||||
|
||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
||||
{
|
||||
|
||||
@ -139,6 +139,10 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
||||
{
|
||||
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
|
||||
}
|
||||
|
||||
monitored_server->server->node_id = -1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user