From 9f7a7e473e14fb632eff25e5f89e9282f6675d20 Mon Sep 17 00:00:00 2001 From: Andreas Kruger Date: Wed, 27 Mar 2019 10:04:40 +0100 Subject: [PATCH] Enable galeramon to track wsrep_desync, wsrep_ready, wsrep_sst_donor_rejects_queries and wsrep_reject_queries --- server/modules/monitor/galeramon/galeramon.cc | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/server/modules/monitor/galeramon/galeramon.cc b/server/modules/monitor/galeramon/galeramon.cc index 1d3ceaa3b..10598c321 100644 --- a/server/modules/monitor/galeramon/galeramon.cc +++ b/server/modules/monitor/galeramon/galeramon.cc @@ -141,7 +141,11 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server) " ('wsrep_cluster_state_uuid'," " 'wsrep_cluster_size'," " 'wsrep_local_index'," - " 'wsrep_local_state')"; + " 'wsrep_local_state'," + " 'wsrep_desync'," + " 'wsrep_ready'," + " 'wsrep_sst_donor_rejects_queries'," + " 'wsrep_reject_queries')"; if (mxs_mysql_query(monitored_server->con, cluster_member) == 0 && (result = mysql_store_result(monitored_server->con)) != NULL) @@ -208,6 +212,42 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server) info.local_state = atoi(row[1]); } + /* Node is in desync - lets take it offline */ + if (strcmp(row[0], "wsrep_desync") == 0) + { + if (strcasecmp(row[1],"YES") || strcasecmp(row[1],"ON") || strcasecmp(row[1],"1") || strcasecmp(row[1],"true")) + { + info.joined = 0; + } + } + + /* Node rejects queries - lets take it offline */ + if (strcmp(row[0], "wsrep_reject_queries") == 0) + { + if (strcasecmp(row[1],"ALL") || strcasecmp(row[1],"ALL_KILL")) + { + info.joined = 0; + } + } + + /* Node rejects queries - lets take it offline */ + if (strcmp(row[0], "wsrep_sst_donor_rejects_queries") == 0) + { + if (strcasecmp(row[1],"YES") || strcasecmp(row[1],"ON") || strcasecmp(row[1],"1") || strcasecmp(row[1],"true")) + { + info.joined = 0; + } + } + + /* Node is not ready - lets take it offline */ + if (strcmp(row[0], "wsrep_ready") == 0) + { + if (strcasecmp(row[1],"YES") || strcasecmp(row[1],"ON") || strcasecmp(row[1],"1") || strcasecmp(row[1],"true")) + { + info.joined = 0; + } + } + if (strcmp(row[0], "wsrep_cluster_state_uuid") == 0 && row[1] && *row[1]) { info.cluster_uuid = row[1];