MXS-1775 Consistently name the argument to update_server_status()

This commit is contained in:
Johan Wikman
2018-05-23 14:44:10 +03:00
parent cb1da5538c
commit 68505a0bcb
10 changed files with 152 additions and 155 deletions

View File

@ -52,20 +52,20 @@ void AuroraMonitor::destroy()
* status of the server is adjusted accordingly based on the results of the
* query.
*
* @param monitor Monitor object
* @param database Server whose status should be updated
* @param monitored_server Server whose status should be updated
*/
void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
if (!SERVER_IN_MAINT(database->server))
if (!SERVER_IN_MAINT(monitored_server->server))
{
SERVER temp_server = {};
temp_server.status = database->server->status;
server_clear_status_nolock(&temp_server, SERVER_RUNNING | SERVER_MASTER | SERVER_SLAVE | SERVER_AUTH_ERROR);
database->mon_prev_status = database->server->status;
temp_server.status = monitored_server->server->status;
server_clear_status_nolock(&temp_server,
SERVER_RUNNING | SERVER_MASTER | SERVER_SLAVE | SERVER_AUTH_ERROR);
monitored_server->mon_prev_status = monitored_server->server->status;
/** Try to connect to or ping the database */
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, database);
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (mon_connection_is_ok(rval))
{
@ -73,12 +73,12 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
MYSQL_RES *result;
/** Connection is OK, query for replica status */
if (mxs_mysql_query(database->con, "SELECT @@aurora_server_id, server_id FROM "
if (mxs_mysql_query(monitored_server->con, "SELECT @@aurora_server_id, server_id FROM "
"information_schema.replica_host_status "
"WHERE session_id = 'MASTER_SESSION_ID'") == 0 &&
(result = mysql_store_result(database->con)))
(result = mysql_store_result(monitored_server->con)))
{
ss_dassert(mysql_field_count(database->con) == 2);
ss_dassert(mysql_field_count(monitored_server->con) == 2);
MYSQL_ROW row = mysql_fetch_row(result);
int status = SERVER_SLAVE;
@ -93,24 +93,24 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
}
else
{
/** Failed to connect to the database */
if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR)
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(&temp_server, SERVER_AUTH_ERROR);
}
if (mon_status_changed(database) && mon_print_fail_status(database))
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(database, rval);
mon_log_connect_error(monitored_server, rval);
}
}
server_transfer_status(database->server, &temp_server);
server_transfer_status(monitored_server->server, &temp_server);
}
}

View File

@ -35,8 +35,7 @@ private:
AuroraMonitor(MXS_MONITOR* monitor);
~AuroraMonitor();
void update_server_status(MXS_MONITORED_SERVER *database);
void update_server_status(MXS_MONITORED_SERVER* monitored_server);
bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params);

View File

@ -258,54 +258,53 @@ static bool using_xtrabackup(MXS_MONITORED_SERVER *database, const char* server_
* slave bits, except for clearing them when a server is not joined to the
* cluster.
*
* @param handle The MySQL Monitor object
* @param database The database to probe
* @param monitored_server The server to probe.
*/
void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
char *server_string;
/* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(database->server))
if (SERVER_IN_MAINT(monitored_server->server))
{
return;
}
/** Store previous status */
database->mon_prev_status = database->server->status;
monitored_server->mon_prev_status = monitored_server->server->status;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, database);
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (!mon_connection_is_ok(rval))
{
if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR)
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(database->server, SERVER_AUTH_ERROR);
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
else
{
server_clear_status_nolock(database->server, SERVER_AUTH_ERROR);
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
database->server->node_id = -1;
monitored_server->server->node_id = -1;
server_clear_status_nolock(database->server, SERVER_RUNNING);
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
if (mon_status_changed(database) && mon_print_fail_status(database))
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(database, rval);
mon_log_connect_error(monitored_server, rval);
}
return;
}
/* If we get this far then we have a working connection */
server_set_status_nolock(database->server, SERVER_RUNNING);
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
/* get server version string */
mxs_mysql_set_server_version(database->con, database->server);
server_string = database->server->version_string;
mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
/* Check if the the Galera FSM shows this node is joined to the cluster */
const char *cluster_member =
@ -315,10 +314,10 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
" 'wsrep_local_index',"
" 'wsrep_local_state')";
if (mxs_mysql_query(database->con, cluster_member) == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, cluster_member) == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
if (mysql_field_count(database->con) < 2)
if (mysql_field_count(monitored_server->con) < 2)
{
mysql_free_result(result);
MXS_ERROR("Unexpected result for \"%s\". "
@ -344,7 +343,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
if (warn_erange_on_local_index)
{
MXS_WARNING("Invalid 'wsrep_local_index' on server '%s': %s",
database->server->name, row[1]);
monitored_server->server->name, row[1]);
warn_erange_on_local_index = false;
}
local_index = -1;
@ -365,7 +364,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
/* Check if the node is a donor and is using xtrabackup, in this case it can stay alive */
else if (strcmp(row[1], "2") == 0 && m_availableWhenDonor == 1 &&
using_xtrabackup(database, server_string))
using_xtrabackup(monitored_server, server_string))
{
info.joined = 1;
}
@ -388,7 +387,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
if (row[1] == NULL || !strlen(row[1]))
{
MXS_DEBUG("Node %s is not running Galera Cluster",
database->server->name);
monitored_server->server->name);
info.cluster_uuid = NULL;
info.joined = 0;
}
@ -399,19 +398,19 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
}
database->server->node_id = info.joined ? info.local_index : -1;
monitored_server->server->node_id = info.joined ? info.local_index : -1;
/* Add server pointer */
info.node = database->server;
info.node = monitored_server->server;
/* Galera Cluster vars fetch */
HASHTABLE *table = m_galera_nodes_info;
GALERA_NODE_INFO *node =
static_cast<GALERA_NODE_INFO*>(hashtable_fetch(table, database->server->name));
static_cast<GALERA_NODE_INFO*>(hashtable_fetch(table, monitored_server->server->name));
if (node)
{
MXS_DEBUG("Node %s is present in galera_nodes_info, updtating info",
database->server->name);
monitored_server->server->name);
MXS_FREE(node->cluster_uuid);
/* Update node data */
@ -419,17 +418,17 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
if (hashtable_add(table, database->server->name, &info))
if (hashtable_add(table, monitored_server->server->name, &info))
{
MXS_DEBUG("Added %s to galera_nodes_info",
database->server->name);
monitored_server->server->name);
}
/* Free the info.cluster_uuid as it's been added to the table */
MXS_FREE(info.cluster_uuid);
}
MXS_DEBUG("Server %s: local_state %d, local_index %d, UUID %s, size %d, possible member %d",
database->server->name,
monitored_server->server->name,
info.local_state,
info.local_index,
info.cluster_uuid ? info.cluster_uuid : "_none_",
@ -440,7 +439,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
}

View File

@ -84,7 +84,7 @@ private:
const char *candidate_uuid,
const int candidate_size);
MXS_MONITORED_SERVER *get_candidate_master();
void update_server_status(MXS_MONITORED_SERVER *database);
void update_server_status(MXS_MONITORED_SERVER* monitored_server);
void reset_cluster_info();
void set_cluster_members();
void set_galera_cluster();

View File

@ -125,59 +125,59 @@ static bool is_slave(MXS_MONITORED_SERVER* server)
return rval;
}
void GRMon::update_server_status(MXS_MONITORED_SERVER* server)
void GRMon::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
/* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(server->server))
if (SERVER_IN_MAINT(monitored_server->server))
{
return;
}
/** Store previous status */
server->mon_prev_status = server->server->status;
monitored_server->mon_prev_status = monitored_server->server->status;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, server);
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (!mon_connection_is_ok(rval))
{
if (mysql_errno(server->con) == ER_ACCESS_DENIED_ERROR)
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(server->server, SERVER_AUTH_ERROR);
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
else
{
server_clear_status_nolock(server->server, SERVER_AUTH_ERROR);
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
server->server->node_id = -1;
monitored_server->server->node_id = -1;
server_clear_status_nolock(server->server, SERVER_RUNNING);
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
if (mon_status_changed(server) && mon_print_fail_status(server))
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(server, rval);
mon_log_connect_error(monitored_server, rval);
}
}
else
{
/* If we get this far then we have a working connection */
server_set_status_nolock(server->server, SERVER_RUNNING);
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
}
if (is_master(server))
if (is_master(monitored_server))
{
server_set_status_nolock(server->server, SERVER_MASTER);
server_clear_status_nolock(server->server, SERVER_SLAVE);
server_set_status_nolock(monitored_server->server, SERVER_MASTER);
server_clear_status_nolock(monitored_server->server, SERVER_SLAVE);
}
else if (is_slave(server))
else if (is_slave(monitored_server))
{
server_set_status_nolock(server->server, SERVER_SLAVE);
server_clear_status_nolock(server->server, SERVER_MASTER);
server_set_status_nolock(monitored_server->server, SERVER_SLAVE);
server_clear_status_nolock(monitored_server->server, SERVER_MASTER);
}
else
{
server_clear_status_nolock(server->server, SERVER_SLAVE);
server_clear_status_nolock(server->server, SERVER_MASTER);
server_clear_status_nolock(monitored_server->server, SERVER_SLAVE);
server_clear_status_nolock(monitored_server->server, SERVER_MASTER);
}
}

View File

@ -35,7 +35,7 @@ private:
GRMon(MXS_MONITOR* monitor);
~GRMon();
void update_server_status(MXS_MONITORED_SERVER* server);
void update_server_status(MXS_MONITORED_SERVER* monitored_server);
bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params);

View File

@ -142,10 +142,9 @@ json_t* MMMonitor::diagnostics_json() const
/**
* Monitor an individual server
*
* @param handle The MySQL Monitor object
* @param database The database to probe
* @param monitored_server The server to probe
*/
void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
@ -155,65 +154,65 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
char *server_string;
/* Don't probe servers in maintenance mode */
if (SERVER_IN_MAINT(database->server))
if (SERVER_IN_MAINT(monitored_server->server))
{
return;
}
/** Store previous status */
database->mon_prev_status = database->server->status;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, database);
monitored_server->mon_prev_status = monitored_server->server->status;
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, monitored_server);
if (!mon_connection_is_ok(rval))
{
if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR)
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(database->server, SERVER_AUTH_ERROR);
monitor_set_pending_status(database, SERVER_AUTH_ERROR);
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
}
server_clear_status_nolock(database->server, SERVER_RUNNING);
monitor_clear_pending_status(database, SERVER_RUNNING);
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
/* Also clear M/S state in both server and monitor server pending struct */
server_clear_status_nolock(database->server, SERVER_SLAVE);
server_clear_status_nolock(database->server, SERVER_MASTER);
monitor_clear_pending_status(database, SERVER_SLAVE);
monitor_clear_pending_status(database, SERVER_MASTER);
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(database->server, SERVER_STALE_STATUS);
monitor_clear_pending_status(database, SERVER_STALE_STATUS);
server_clear_status_nolock(monitored_server->server, SERVER_STALE_STATUS);
monitor_clear_pending_status(monitored_server, SERVER_STALE_STATUS);
if (mon_status_changed(database) && mon_print_fail_status(database))
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(database, rval);
mon_log_connect_error(monitored_server, rval);
}
return;
}
else
{
server_clear_status_nolock(database->server, SERVER_AUTH_ERROR);
monitor_clear_pending_status(database, SERVER_AUTH_ERROR);
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
}
/* Store current status in both server and monitor server pending struct */
server_set_status_nolock(database->server, SERVER_RUNNING);
monitor_set_pending_status(database, SERVER_RUNNING);
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
monitor_set_pending_status(monitored_server, SERVER_RUNNING);
/* get server version from current server */
server_version = mysql_get_server_version(database->con);
server_version = mysql_get_server_version(monitored_server->con);
/* get server version string */
mxs_mysql_set_server_version(database->con, database->server);
server_string = database->server->version_string;
mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
/* get server_id form current node */
if (mxs_mysql_query(database->con, "SELECT @@server_id") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SELECT @@server_id") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
long server_id = -1;
if (mysql_field_count(database->con) != 1)
if (mysql_field_count(monitored_server->con) != 1)
{
mysql_free_result(result);
MXS_ERROR("Unexpected result for 'SELECT @@server_id'. Expected 1 column."
@ -229,13 +228,13 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
{
server_id = -1;
}
database->server->node_id = server_id;
monitored_server->server->node_id = server_id;
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
/* Check if the Slave_SQL_Running and Slave_IO_Running status is
* set to Yes
@ -245,13 +244,13 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
if (server_version >= 100000)
{
if (mxs_mysql_query(database->con, "SHOW ALL SLAVES STATUS") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SHOW ALL SLAVES STATUS") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
int i = 0;
long master_id = -1;
if (mysql_field_count(database->con) < 42)
if (mysql_field_count(monitored_server->con) < 42)
{
mysql_free_result(result);
MXS_ERROR("\"SHOW ALL SLAVES STATUS\" returned less than the expected"
@ -287,7 +286,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
i++;
}
/* store master_id of current node */
memcpy(&database->server->master_id, &master_id, sizeof(long));
memcpy(&monitored_server->server->master_id, &master_id, sizeof(long));
mysql_free_result(result);
@ -303,29 +302,29 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
}
else
{
if (mxs_mysql_query(database->con, "SHOW SLAVE STATUS") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SHOW SLAVE STATUS") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
long master_id = -1;
if (mysql_field_count(database->con) < 40)
if (mysql_field_count(monitored_server->con) < 40)
{
mysql_free_result(result);
if (server_version < 5 * 10000 + 5 * 100)
{
if (database->log_version_err)
if (monitored_server->log_version_err)
{
MXS_ERROR("\"SHOW SLAVE STATUS\" "
" for versions less than 5.5 does not have master_server_id, "
"replication tree cannot be resolved for server %s."
" MySQL Version: %s", database->server->name, server_string);
database->log_version_err = false;
" MySQL Version: %s", monitored_server->server->name, server_string);
monitored_server->log_version_err = false;
}
}
else
@ -362,21 +361,21 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
}
/* store master_id of current node */
memcpy(&database->server->master_id, &master_id, sizeof(long));
memcpy(&monitored_server->server->master_id, &master_id, sizeof(long));
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
}
/* get variable 'read_only' set by an external component */
if (mxs_mysql_query(database->con, "SHOW GLOBAL VARIABLES LIKE 'read_only'") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SHOW GLOBAL VARIABLES LIKE 'read_only'") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
if (mysql_field_count(database->con) < 2)
if (mysql_field_count(monitored_server->con) < 2)
{
mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW GLOBAL VARIABLES LIKE 'read_only'\". "
@ -399,36 +398,36 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
/* Remove addition info */
monitor_clear_pending_status(database, SERVER_STALE_STATUS);
monitor_clear_pending_status(monitored_server, SERVER_STALE_STATUS);
/* Set the Slave Role */
/* Set the Master role */
if (ismaster)
{
monitor_clear_pending_status(database, SERVER_SLAVE);
monitor_set_pending_status(database, SERVER_MASTER);
monitor_clear_pending_status(monitored_server, SERVER_SLAVE);
monitor_set_pending_status(monitored_server, SERVER_MASTER);
/* Set replication depth to 0 */
database->server->depth = 0;
monitored_server->server->depth = 0;
}
else if (isslave)
{
monitor_set_pending_status(database, SERVER_SLAVE);
monitor_set_pending_status(monitored_server, SERVER_SLAVE);
/* Avoid any possible stale Master state */
monitor_clear_pending_status(database, SERVER_MASTER);
monitor_clear_pending_status(monitored_server, SERVER_MASTER);
/* Set replication depth to 1 */
database->server->depth = 1;
monitored_server->server->depth = 1;
}
/* Avoid any possible Master/Slave stale state */
else
{
monitor_clear_pending_status(database, SERVER_SLAVE);
monitor_clear_pending_status(database, SERVER_MASTER);
monitor_clear_pending_status(monitored_server, SERVER_SLAVE);
monitor_clear_pending_status(monitored_server, SERVER_MASTER);
}
}

View File

@ -40,7 +40,7 @@ private:
MXS_MONITORED_SERVER *get_current_master();
void update_server_status(MXS_MONITORED_SERVER *database);
void update_server_status(MXS_MONITORED_SERVER* monitored_server);
bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params);

View File

@ -127,7 +127,7 @@ static json_t* diagnostics_json(const MXS_MONITOR_INSTANCE *mon)
*
* @param database The database to probe
*/
void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES *result;
@ -135,43 +135,43 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
char *server_string;
/* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(database->server))
if (SERVER_IN_MAINT(monitored_server->server))
{
return;
}
mxs_connect_result_t rval = mon_ping_or_connect_to_db(m_monitor, database);
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(database->server, SERVER_RUNNING);
server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR)
if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
{
server_set_status_nolock(database->server, SERVER_AUTH_ERROR);
server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
}
database->server->node_id = -1;
monitored_server->server->node_id = -1;
if (mon_status_changed(database) && mon_print_fail_status(database))
if (mon_status_changed(monitored_server) && mon_print_fail_status(monitored_server))
{
mon_log_connect_error(database, rval);
mon_log_connect_error(monitored_server, rval);
}
return;
}
server_clear_status_nolock(database->server, SERVER_AUTH_ERROR);
server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
/* If we get this far then we have a working connection */
server_set_status_nolock(database->server, SERVER_RUNNING);
server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
/* get server version string */
mxs_mysql_set_server_version(database->con, database->server);
server_string = database->server->version_string;
mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
/* Check if the the SQL node is able to contact one or more data nodes */
if (mxs_mysql_query(database->con, "SHOW STATUS LIKE 'Ndb_number_of_ready_data_nodes'") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SHOW STATUS LIKE 'Ndb_number_of_ready_data_nodes'") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
if (mysql_field_count(database->con) < 2)
if (mysql_field_count(monitored_server->con) < 2)
{
mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE "
@ -191,14 +191,14 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
/* Check the the SQL node id in the MySQL cluster */
if (mxs_mysql_query(database->con, "SHOW STATUS LIKE 'Ndb_cluster_node_id'") == 0
&& (result = mysql_store_result(database->con)) != NULL)
if (mxs_mysql_query(monitored_server->con, "SHOW STATUS LIKE 'Ndb_cluster_node_id'") == 0
&& (result = mysql_store_result(monitored_server->con)) != NULL)
{
if (mysql_field_count(database->con) < 2)
if (mysql_field_count(monitored_server->con) < 2)
{
mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE 'Ndb_cluster_node_id'\". "
@ -216,24 +216,24 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
{
cluster_node_id = -1;
}
database->server->node_id = cluster_node_id;
monitored_server->server->node_id = cluster_node_id;
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
mon_report_query_error(monitored_server);
}
if (isjoined)
{
server_set_status_nolock(database->server, SERVER_NDB);
database->server->depth = 0;
server_set_status_nolock(monitored_server->server, SERVER_NDB);
monitored_server->server->depth = 0;
}
else
{
server_clear_status_nolock(database->server, SERVER_NDB);
database->server->depth = -1;
server_clear_status_nolock(monitored_server->server, SERVER_NDB);
monitored_server->server->depth = -1;
}
}

View File

@ -37,7 +37,7 @@ private:
NDBCMonitor(MXS_MONITOR* monitor);
~NDBCMonitor();
void update_server_status(MXS_MONITORED_SERVER *database);
void update_server_status(MXS_MONITORED_SERVER* monitored_server);
bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params);