From c7c670930c9b13aaeaef2f92f5c9f3fbc284a31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Fri, 27 Oct 2017 12:39:57 +0300 Subject: [PATCH] MXS-1493: Check that master appears dead before verifying it Before the verification of the master's failure is done, the master must first appear to have failed. --- server/modules/monitor/mysqlmon/mysql_mon.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/modules/monitor/mysqlmon/mysql_mon.cc b/server/modules/monitor/mysqlmon/mysql_mon.cc index 723e79ffd..c66936989 100644 --- a/server/modules/monitor/mysqlmon/mysql_mon.cc +++ b/server/modules/monitor/mysqlmon/mysql_mon.cc @@ -1148,6 +1148,12 @@ static bool update_slave_status(MYSQL_MONITOR* handle, MXS_MONITORED_SERVER* db) return do_show_slave_status(info, db, version); } +static inline bool master_maybe_dead(MYSQL_MONITOR* handle) +{ + return handle->verify_master_failure && handle->master && + SERVER_IS_DOWN(handle->master->server); +} + static bool master_still_alive(MYSQL_MONITOR* handle) { bool rval = true; @@ -2097,7 +2103,7 @@ monitorMain(void *arg) "'%s' via MaxAdmin or the REST API.", CN_FAILOVER, mon->name); handle->failover = false; } - else if (handle->verify_master_failure && master_still_alive(handle)) + else if (master_maybe_dead(handle) && master_still_alive(handle)) { MXS_INFO("Master failure not yet confirmed by slaves, delaying failover."); }