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 * status of the server is adjusted accordingly based on the results of the
* query. * query.
* *
* @param monitor Monitor object * @param monitored_server Server whose status should be updated
* @param database 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 = {}; SERVER temp_server = {};
temp_server.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); server_clear_status_nolock(&temp_server,
database->mon_prev_status = database->server->status; 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 */ /** 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)) if (mon_connection_is_ok(rval))
{ {
@ -73,12 +73,12 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
MYSQL_RES *result; MYSQL_RES *result;
/** Connection is OK, query for replica status */ /** 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 " "information_schema.replica_host_status "
"WHERE session_id = 'MASTER_SESSION_ID'") == 0 && "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); MYSQL_ROW row = mysql_fetch_row(result);
int status = SERVER_SLAVE; int status = SERVER_SLAVE;
@ -93,24 +93,24 @@ void AuroraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
} }
else else
{ {
mon_report_query_error(database); mon_report_query_error(monitored_server);
} }
} }
else else
{ {
/** Failed to connect to the database */ /** 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); 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(MXS_MONITOR* monitor);
~AuroraMonitor(); ~AuroraMonitor();
void update_server_status(MXS_MONITORED_SERVER *database); void update_server_status(MXS_MONITORED_SERVER* monitored_server);
bool has_sufficient_permissions() const; bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params); 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 * slave bits, except for clearing them when a server is not joined to the
* cluster. * cluster.
* *
* @param handle The MySQL Monitor object * @param monitored_server The server to probe.
* @param database The database 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_ROW row;
MYSQL_RES *result; MYSQL_RES *result;
char *server_string; char *server_string;
/* Don't even probe server flagged as in maintenance */ /* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(database->server)) if (SERVER_IN_MAINT(monitored_server->server))
{ {
return; return;
} }
/** Store previous status */ /** 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 (!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 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; return;
} }
/* If we get this far then we have a working connection */ /* 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 */ /* get server version string */
mxs_mysql_set_server_version(database->con, database->server); mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = database->server->version_string; server_string = monitored_server->server->version_string;
/* Check if the the Galera FSM shows this node is joined to the cluster */ /* Check if the the Galera FSM shows this node is joined to the cluster */
const char *cluster_member = const char *cluster_member =
@ -315,10 +314,10 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
" 'wsrep_local_index'," " 'wsrep_local_index',"
" 'wsrep_local_state')"; " 'wsrep_local_state')";
if (mxs_mysql_query(database->con, cluster_member) == 0 if (mxs_mysql_query(monitored_server->con, cluster_member) == 0
&& (result = mysql_store_result(database->con)) != NULL) && (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); mysql_free_result(result);
MXS_ERROR("Unexpected result for \"%s\". " 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) if (warn_erange_on_local_index)
{ {
MXS_WARNING("Invalid 'wsrep_local_index' on server '%s': %s", 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; warn_erange_on_local_index = false;
} }
local_index = -1; 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 */ /* 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 && else if (strcmp(row[1], "2") == 0 && m_availableWhenDonor == 1 &&
using_xtrabackup(database, server_string)) using_xtrabackup(monitored_server, server_string))
{ {
info.joined = 1; info.joined = 1;
} }
@ -388,7 +387,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
if (row[1] == NULL || !strlen(row[1])) if (row[1] == NULL || !strlen(row[1]))
{ {
MXS_DEBUG("Node %s is not running Galera Cluster", MXS_DEBUG("Node %s is not running Galera Cluster",
database->server->name); monitored_server->server->name);
info.cluster_uuid = NULL; info.cluster_uuid = NULL;
info.joined = 0; 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 */ /* Add server pointer */
info.node = database->server; info.node = monitored_server->server;
/* Galera Cluster vars fetch */ /* Galera Cluster vars fetch */
HASHTABLE *table = m_galera_nodes_info; HASHTABLE *table = m_galera_nodes_info;
GALERA_NODE_INFO *node = 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) if (node)
{ {
MXS_DEBUG("Node %s is present in galera_nodes_info, updtating info", MXS_DEBUG("Node %s is present in galera_nodes_info, updtating info",
database->server->name); monitored_server->server->name);
MXS_FREE(node->cluster_uuid); MXS_FREE(node->cluster_uuid);
/* Update node data */ /* Update node data */
@ -419,17 +418,17 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
} }
else 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", 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 */ /* Free the info.cluster_uuid as it's been added to the table */
MXS_FREE(info.cluster_uuid); MXS_FREE(info.cluster_uuid);
} }
MXS_DEBUG("Server %s: local_state %d, local_index %d, UUID %s, size %d, possible member %d", 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_state,
info.local_index, info.local_index,
info.cluster_uuid ? info.cluster_uuid : "_none_", info.cluster_uuid ? info.cluster_uuid : "_none_",
@ -440,7 +439,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER *database)
} }
else else
{ {
mon_report_query_error(database); mon_report_query_error(monitored_server);
} }
} }

View File

@ -84,7 +84,7 @@ private:
const char *candidate_uuid, const char *candidate_uuid,
const int candidate_size); const int candidate_size);
MXS_MONITORED_SERVER *get_candidate_master(); 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 reset_cluster_info();
void set_cluster_members(); void set_cluster_members();
void set_galera_cluster(); void set_galera_cluster();

View File

@ -125,59 +125,59 @@ static bool is_slave(MXS_MONITORED_SERVER* server)
return rval; 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 */ /* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(server->server)) if (SERVER_IN_MAINT(monitored_server->server))
{ {
return; return;
} }
/** Store previous status */ /** 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 (!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 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 else
{ {
/* If we get this far then we have a working connection */ /* 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_set_status_nolock(monitored_server->server, SERVER_MASTER);
server_clear_status_nolock(server->server, SERVER_SLAVE); 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_set_status_nolock(monitored_server->server, SERVER_SLAVE);
server_clear_status_nolock(server->server, SERVER_MASTER); server_clear_status_nolock(monitored_server->server, SERVER_MASTER);
} }
else else
{ {
server_clear_status_nolock(server->server, SERVER_SLAVE); server_clear_status_nolock(monitored_server->server, SERVER_SLAVE);
server_clear_status_nolock(server->server, SERVER_MASTER); server_clear_status_nolock(monitored_server->server, SERVER_MASTER);
} }
} }

View File

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

View File

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

View File

@ -40,7 +40,7 @@ private:
MXS_MONITORED_SERVER *get_current_master(); 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; bool has_sufficient_permissions() const;
void configure(const MXS_CONFIG_PARAMETER* params); 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 * @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_ROW row;
MYSQL_RES *result; MYSQL_RES *result;
@ -135,43 +135,43 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
char *server_string; char *server_string;
/* Don't even probe server flagged as in maintenance */ /* Don't even probe server flagged as in maintenance */
if (SERVER_IN_MAINT(database->server)) if (SERVER_IN_MAINT(monitored_server->server))
{ {
return; 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)) 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; 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 */ /* 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 */ /* get server version string */
mxs_mysql_set_server_version(database->con, database->server); mxs_mysql_set_server_version(monitored_server->con, monitored_server->server);
server_string = database->server->version_string; server_string = monitored_server->server->version_string;
/* Check if the the SQL node is able to contact one or more data nodes */ /* 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 if (mxs_mysql_query(monitored_server->con, "SHOW STATUS LIKE 'Ndb_number_of_ready_data_nodes'") == 0
&& (result = mysql_store_result(database->con)) != NULL) && (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); mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE " MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE "
@ -191,14 +191,14 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER *database)
} }
else else
{ {
mon_report_query_error(database); mon_report_query_error(monitored_server);
} }
/* Check the the SQL node id in the MySQL cluster */ /* Check the the SQL node id in the MySQL cluster */
if (mxs_mysql_query(database->con, "SHOW STATUS LIKE 'Ndb_cluster_node_id'") == 0 if (mxs_mysql_query(monitored_server->con, "SHOW STATUS LIKE 'Ndb_cluster_node_id'") == 0
&& (result = mysql_store_result(database->con)) != NULL) && (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); mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE 'Ndb_cluster_node_id'\". " 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; cluster_node_id = -1;
} }
database->server->node_id = cluster_node_id; monitored_server->server->node_id = cluster_node_id;
} }
mysql_free_result(result); mysql_free_result(result);
} }
else else
{ {
mon_report_query_error(database); mon_report_query_error(monitored_server);
} }
if (isjoined) if (isjoined)
{ {
server_set_status_nolock(database->server, SERVER_NDB); server_set_status_nolock(monitored_server->server, SERVER_NDB);
database->server->depth = 0; monitored_server->server->depth = 0;
} }
else else
{ {
server_clear_status_nolock(database->server, SERVER_NDB); server_clear_status_nolock(monitored_server->server, SERVER_NDB);
database->server->depth = -1; monitored_server->server->depth = -1;
} }
} }

View File

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