MXS-1775 Consistently name the argument to update_server_status()
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user