MXS-1775 Check connection in MonitorInstance::tick()
Since the connection checking is done in an identical fashion in all monitors, it can be moved to the base-class.
This commit is contained in:
@ -72,8 +72,13 @@ protected:
|
|||||||
* on each server.
|
* on each server.
|
||||||
*
|
*
|
||||||
* The default implementation will:
|
* The default implementation will:
|
||||||
* - Not call @update_server_status for a server that is in maintenance.
|
* - Not call @c update_server_status for a server that is in maintenance.
|
||||||
* - Before calling, update the previous status of the server.
|
* - Before calling, update the previous status of the server.
|
||||||
|
* - Before calling, update the pending status of the monitored server object
|
||||||
|
* to the status of the corresponing server object.
|
||||||
|
* - Ensure that there is a connection to the server. If that fails, then
|
||||||
|
* the pending status will be updated accordingly and @c update_server_status
|
||||||
|
* will *not* be called.
|
||||||
* - After the call, update the error count of the server.
|
* - After the call, update the error count of the server.
|
||||||
*/
|
*/
|
||||||
virtual void tick();
|
virtual void tick();
|
||||||
|
@ -2644,7 +2644,33 @@ void MonitorInstance::tick()
|
|||||||
pMs->mon_prev_status = pMs->server->status;
|
pMs->mon_prev_status = pMs->server->status;
|
||||||
pMs->pending_status = pMs->server->status;
|
pMs->pending_status = pMs->server->status;
|
||||||
|
|
||||||
update_server_status(pMs);
|
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, pMs);
|
||||||
|
|
||||||
|
if (mon_connection_is_ok(rval))
|
||||||
|
{
|
||||||
|
monitor_clear_pending_status(pMs, SERVER_AUTH_ERROR);
|
||||||
|
monitor_set_pending_status(pMs, SERVER_RUNNING);
|
||||||
|
|
||||||
|
update_server_status(pMs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
monitor_clear_pending_status(pMs, SERVER_RUNNING);
|
||||||
|
|
||||||
|
if (mysql_errno(pMs->con) == ER_ACCESS_DENIED_ERROR)
|
||||||
|
{
|
||||||
|
monitor_set_pending_status(pMs, SERVER_AUTH_ERROR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
monitor_clear_pending_status(pMs, SERVER_AUTH_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mon_status_changed(pMs) && mon_print_fail_status(pMs))
|
||||||
|
{
|
||||||
|
mon_log_connect_error(pMs, rval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (mon_status_changed(pMs) || mon_print_fail_status(pMs))
|
if (mon_status_changed(pMs) || mon_print_fail_status(pMs))
|
||||||
{
|
{
|
||||||
|
@ -56,35 +56,8 @@ void AuroraMonitor::destroy()
|
|||||||
*/
|
*/
|
||||||
void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
void AuroraMonitor::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))
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
|
||||||
{
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
monitored_server->server->node_id = -1;
|
|
||||||
|
|
||||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
|
||||||
{
|
|
||||||
mon_log_connect_error(monitored_server, rval);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_MASTER | SERVER_SLAVE);
|
monitor_clear_pending_status(monitored_server, SERVER_MASTER | SERVER_SLAVE);
|
||||||
|
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
|
|
||||||
/** Connection is OK, query for replica status */
|
/** Connection is OK, query for replica status */
|
||||||
|
@ -262,34 +262,6 @@ static bool using_xtrabackup(MXS_MONITORED_SERVER *database, const char* server_
|
|||||||
*/
|
*/
|
||||||
void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_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))
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
|
||||||
{
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
monitored_server->server->node_id = -1;
|
|
||||||
|
|
||||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
|
||||||
{
|
|
||||||
mon_log_connect_error(monitored_server, rval);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
char *server_string;
|
char *server_string;
|
||||||
|
@ -127,34 +127,6 @@ static bool is_slave(MXS_MONITORED_SERVER* server)
|
|||||||
|
|
||||||
void GRMon::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
void GRMon::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))
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
|
||||||
{
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
monitored_server->server->node_id = -1;
|
|
||||||
|
|
||||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
|
||||||
{
|
|
||||||
mon_log_connect_error(monitored_server, rval);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (is_master(monitored_server))
|
if (is_master(monitored_server))
|
||||||
{
|
{
|
||||||
monitor_set_pending_status(monitored_server, SERVER_MASTER);
|
monitor_set_pending_status(monitored_server, SERVER_MASTER);
|
||||||
|
@ -146,34 +146,6 @@ json_t* MMMonitor::diagnostics_json() const
|
|||||||
*/
|
*/
|
||||||
void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
void MMMonitor::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))
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
|
||||||
{
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
monitored_server->server->node_id = -1;
|
|
||||||
|
|
||||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
|
||||||
{
|
|
||||||
mon_log_connect_error(monitored_server, rval);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
int isslave = 0;
|
int isslave = 0;
|
||||||
|
@ -129,34 +129,6 @@ static json_t* diagnostics_json(const MXS_MONITOR_INSTANCE *mon)
|
|||||||
*/
|
*/
|
||||||
void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
|
void NDBCMonitor::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))
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
|
|
||||||
{
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
monitored_server->server->node_id = -1;
|
|
||||||
|
|
||||||
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
|
|
||||||
{
|
|
||||||
mon_log_connect_error(monitored_server, rval);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
|
|
||||||
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
|
|
||||||
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
int isjoined = 0;
|
int isjoined = 0;
|
||||||
|
Reference in New Issue
Block a user