MXS-1775 Use same arrangement in update_server_status

All monitors (but possible for MariaDBMon) now handle the
connecting to the server in the same way, that is, if the
connecting fails, then the status is updated and we return.
This commit is contained in:
Johan Wikman
2018-05-24 10:18:53 +03:00
parent df4e19eb27
commit 5196371762
5 changed files with 64 additions and 63 deletions

View File

@ -56,16 +56,30 @@ void AuroraMonitor::destroy()
*/
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))
{
/** Failed to connect to the database */
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(monitored_server, rval);
}
return;
}
SERVER temp_server = {};
temp_server.status = monitored_server->server->status;
server_clear_status_nolock(&temp_server,
SERVER_RUNNING | SERVER_MASTER | SERVER_SLAVE | SERVER_AUTH_ERROR);
/** Try to connect to or ping the database */
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (mon_connection_is_ok(rval))
{
server_set_status_nolock(&temp_server, SERVER_RUNNING);
MYSQL_RES *result;
@ -92,20 +106,6 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
mon_report_query_error(monitored_server);
}
}
else
{
/** Failed to connect to the database */
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(&temp_server, SERVER_AUTH_ERROR);
}
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(monitored_server, rval);
}
}
server_transfer_status(monitored_server->server, &temp_server);
}

View File

@ -262,10 +262,6 @@ static bool using_xtrabackup(MXS_MONITORED_SERVER *database, const char* server_
*/
void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
char *server_string;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (!mon_connection_is_ok(rval))
{
@ -290,6 +286,10 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
return;
}
MYSQL_ROW row;
MYSQL_RES *result;
char *server_string;
/* If we get this far then we have a working connection */
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);

View File

@ -148,12 +148,12 @@ void GRMon::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
mon_log_connect_error(monitored_server, rval);
}
return;
}
else
{
/* If we get this far then we have a working connection */
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
}
if (is_master(monitored_server))
{

View File

@ -146,13 +146,6 @@ json_t* MMMonitor::diagnostics_json() const
*/
void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
int isslave = 0;
int ismaster = 0;
unsigned long int server_version = 0;
char *server_string;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (!mon_connection_is_ok(rval))
@ -179,13 +172,19 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
mon_log_connect_error(monitored_server, rval);
}
return;
}
else
{
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
}
MYSQL_ROW row;
MYSQL_RES *result;
int isslave = 0;
int ismaster = 0;
unsigned long int server_version = 0;
char *server_string;
/* Store current status in both server and monitor server pending struct */
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);

View File

@ -129,12 +129,8 @@ static json_t* diagnostics_json(const MXS_MONITOR_INSTANCE *mon)
*/
void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
int isjoined = 0;
char *server_string;
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);
@ -150,6 +146,7 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
mon_log_connect_error(monitored_server, rval);
}
return;
}
@ -157,6 +154,11 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
/* If we get this far then we have a working connection */
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
MYSQL_ROW row;
MYSQL_RES *result;
int isjoined = 0;
char *server_string;
/* get server version string */
mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;