From c5040ab8546b8291903e6840d9b33ead9da8f7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Mon, 2 Apr 2018 05:01:48 +0200 Subject: [PATCH] Monitor: do not consider unhealthy ProxySQL's as backends if monitor is unable to login --- lib/MySQL_Monitor.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/MySQL_Monitor.cpp b/lib/MySQL_Monitor.cpp index e021ec6ab..95da46dc4 100644 --- a/lib/MySQL_Monitor.cpp +++ b/lib/MySQL_Monitor.cpp @@ -400,7 +400,11 @@ void * monitor_connect_thread(void *arg) { rc=sqlite3_reset(statement); assert(rc==SQLITE_OK); sqlite3_finalize(statement); if (mmsd->mysql_error_msg) { - if (strncmp(mmsd->mysql_error_msg,"Access denied for user",strlen("Access denied for user"))==0) { + if ( + (strncmp(mmsd->mysql_error_msg,"Access denied for user",strlen("Access denied for user"))==0) + || + (strncmp(mmsd->mysql_error_msg,"ProxySQL Error: Access denied for user",strlen("ProxySQL Error: Access denied for user"))==0) + ) { proxy_error("Server %s:%d is returning \"Access denied\" for monitoring user\n", mmsd->hostname, mmsd->port); } } @@ -1403,7 +1407,7 @@ __end_monitor_ping_loop: resultset=NULL; } char *new_query=NULL; - new_query=(char *)"SELECT 1 FROM (SELECT hostname,port,ping_error FROM mysql_server_ping_log WHERE hostname='%s' AND port='%s' ORDER BY time_start_us DESC LIMIT %d) a WHERE ping_error IS NOT NULL AND ping_error NOT LIKE 'Access denied for user%%' GROUP BY hostname,port HAVING COUNT(*)=%d"; + new_query=(char *)"SELECT 1 FROM (SELECT hostname,port,ping_error FROM mysql_server_ping_log WHERE hostname='%s' AND port='%s' ORDER BY time_start_us DESC LIMIT %d) a WHERE ping_error IS NOT NULL AND ping_error NOT LIKE 'Access denied for user%%' AND ping_error NOT LIKE 'ProxySQL Error: Access denied for user%%' GROUP BY hostname,port HAVING COUNT(*)=%d"; for (j=0;j