From 9b2209a8d19cbdc815e398468b62d32373ee3bd2 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Thu, 6 Oct 2016 16:52:50 +0300 Subject: [PATCH] Log only one warning when failover is initiated Mysqlmon would log a warning at every monitoring interval when failover was initiated. --- server/modules/monitor/mysqlmon.h | 1 + server/modules/monitor/mysqlmon/mysql_mon.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/modules/monitor/mysqlmon.h b/server/modules/monitor/mysqlmon.h index 3eb551ccc..efbd140f3 100644 --- a/server/modules/monitor/mysqlmon.h +++ b/server/modules/monitor/mysqlmon.h @@ -77,6 +77,7 @@ typedef struct bool failover; /**< If simple failover is enabled */ int failcount; /**< How many monitoring cycles servers must be down before failover is initiated */ + bool warn_failover; /**< Log a warning when failover happens */ } MYSQL_MONITOR; #endif diff --git a/server/modules/monitor/mysqlmon/mysql_mon.c b/server/modules/monitor/mysqlmon/mysql_mon.c index eaacaf1bb..f454ae84f 100644 --- a/server/modules/monitor/mysqlmon/mysql_mon.c +++ b/server/modules/monitor/mysqlmon/mysql_mon.c @@ -275,6 +275,7 @@ startMonitor(MONITOR *monitor, const CONFIG_PARAMETER* params) handle->mysql51_replication = false; handle->failover = false; handle->failcount = MYSQLMON_DEFAULT_FAILCOUNT; + handle->warn_failover = true; memset(handle->events, false, sizeof(handle->events)); spinlock_init(&handle->lock); } @@ -1093,11 +1094,12 @@ void do_failover(MYSQL_MONITOR *handle, MONITOR_SERVERS *db) { if (SERVER_IS_RUNNING(db->server)) { - if (!SERVER_IS_MASTER(db->server)) + if (!SERVER_IS_MASTER(db->server) && handle->warn_failover) { MXS_WARNING("Failover initiated, server '%s' is now the master. " "All other servers are set into maintenance mode.", db->server->unique_name); + handle->warn_failover = false; } server_clear_set_status(db->server, SERVER_SLAVE, SERVER_MASTER); @@ -1397,6 +1399,10 @@ monitorMain(void *arg) /** Other servers have died, initiate a failover to the last remaining server */ do_failover(handle, mon->databases); } + else + { + handle->warn_failover = true; + } } ptr = mon->databases;