Add more error messages to monitors

When the execution of a query fails, the error reported by the Connector-C
and the server where the query was executed is logged.
This commit is contained in:
Markus Mäkelä
2017-08-02 20:56:54 +03:00
parent ab82c7455c
commit f7b8744460
7 changed files with 65 additions and 10 deletions

View File

@ -243,4 +243,11 @@ void mon_process_state_changes(MXS_MONITOR *monitor, const char *script, uint64_
*/
void mon_hangup_failed_servers(MXS_MONITOR *monitor);
/**
* @brief Report query errors
*
* @param db Database where the query failed
*/
void mon_report_query_error(MXS_MONITOR_SERVERS* db);
MXS_END_DECLS

View File

@ -1430,6 +1430,14 @@ void mon_hangup_failed_servers(MXS_MONITOR *monitor)
}
}
}
void mon_report_query_error(MXS_MONITOR_SERVERS* db)
{
MXS_ERROR("Failed to execute query on server '%s' ([%s]:%d): %s",
db->server->unique_name, db->server->name,
db->server->port, mysql_error(db->con));
}
/**
* Acquire locks on all servers monitored by this monitor. There should
* only be max 1 monitor per server.

View File

@ -79,10 +79,7 @@ void update_server_status(MXS_MONITOR *monitor, MXS_MONITOR_SERVERS *database)
}
else
{
MXS_ERROR("Failed to query server %s ([%s]:%d): %d, %s",
database->server->unique_name, database->server->name,
database->server->port, mysql_errno(database->con),
mysql_error(database->con));
mon_report_query_error(database);
}
}
else

View File

@ -311,10 +311,18 @@ monitorDatabase(MXS_MONITOR *mon, MXS_MONITOR_SERVERS *database)
}
mysql_free_result(result2);
}
else
{
mon_report_query_error(database);
}
}
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
if (isjoined)
{
@ -350,7 +358,10 @@ monitorDatabase(MXS_MONITOR *mon, MXS_MONITOR_SERVERS *database)
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
server_set_status_nolock(&temp_server, SERVER_JOINED);
}
else
@ -786,9 +797,7 @@ static void update_sst_donor_nodes(MXS_MONITOR *mon, int is_cluster)
}
else
{
MXS_ERROR("Error while selecting 'wsrep_node_name' from node %s: %s",
ptr->server->unique_name,
mysql_error(ptr->con));
mon_report_query_error(ptr);
}
}

View File

@ -283,7 +283,10 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITOR_SERVERS *database)
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
/* Check if the Slave_SQL_Running and Slave_IO_Running status is
* set to Yes
*/
@ -348,6 +351,10 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITOR_SERVERS *database)
isslave = 0;
}
}
else
{
mon_report_query_error(database);
}
}
else
{
@ -409,6 +416,10 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITOR_SERVERS *database)
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
}
/* get variable 'read_only' set by an external component */
@ -436,6 +447,10 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITOR_SERVERS *database)
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
/* Remove addition info */
monitor_clear_pending_status(database, SERVER_STALE_STATUS);

View File

@ -492,6 +492,10 @@ static inline void monitor_mysql_db(MXS_MONITOR_SERVERS* database, MYSQL_SERVER_
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
}
/**
@ -544,7 +548,10 @@ static MXS_MONITOR_SERVERS *build_mysql51_replication_tree(MXS_MONITOR *mon)
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
/* Set the Slave Role */
if (ismaster)
@ -718,6 +725,10 @@ monitorDatabase(MXS_MONITOR *mon, MXS_MONITOR_SERVERS *database)
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
/* Check first for MariaDB 10.x.x and get status for multi-master replication */
if (server_version >= 100000)

View File

@ -245,6 +245,10 @@ monitorDatabase(MXS_MONITOR_SERVERS *database, char *defaultUser, char *defaultP
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
/* Check the the SQL node id in the MySQL cluster */
if (mysql_query(database->con, "SHOW STATUS LIKE 'Ndb_cluster_node_id'") == 0
@ -272,6 +276,10 @@ monitorDatabase(MXS_MONITOR_SERVERS *database, char *defaultUser, char *defaultP
}
mysql_free_result(result);
}
else
{
mon_report_query_error(database);
}
if (isjoined)
{