Clean up switchover_check_current()

Now uses MariaDBServer.
This commit is contained in:
Esa Korhonen
2018-07-25 14:56:18 +03:00
parent 18bfca0533
commit cfa07c69ff
2 changed files with 20 additions and 17 deletions

View File

@ -1205,25 +1205,25 @@ bool MariaDBMonitor::is_candidate_better(const MariaDBServer* current_best, cons
* @return True if current master seems ok. False, if there is some error with the
* specified current master.
*/
bool MariaDBMonitor::switchover_check_current(const MXS_MONITORED_SERVER* suggested_curr_master,
bool MariaDBMonitor::switchover_check_current(const MariaDBServer* suggested_curr_master,
json_t** error_out) const
{
ss_dassert(suggested_curr_master);
bool server_is_master = false;
MXS_MONITORED_SERVER* extra_master = NULL; // A master server which is not the suggested one
for (MXS_MONITORED_SERVER* mon_serv = m_monitor->monitored_servers;
mon_serv != NULL && extra_master == NULL;
mon_serv = mon_serv->next)
MariaDBServer* extra_master = NULL; // A master server which is not the suggested one
for (auto iter = m_servers.begin(); iter != m_servers.end() && extra_master == NULL; iter++)
{
if (status_is_master(mon_serv->pending_status))
MariaDBServer* server = *iter;
if (server->is_master())
{
if (mon_serv == suggested_curr_master)
if (server == suggested_curr_master)
{
server_is_master = true;
}
else
{
extra_master = mon_serv;
extra_master = server;
}
}
}
@ -1231,12 +1231,12 @@ bool MariaDBMonitor::switchover_check_current(const MXS_MONITORED_SERVER* sugges
if (!server_is_master)
{
PRINT_MXS_JSON_ERROR(error_out, "Server '%s' is not the current master or it's in maintenance.",
suggested_curr_master->server->name);
suggested_curr_master->name());
}
else if (extra_master)
{
PRINT_MXS_JSON_ERROR(error_out, "Cluster has an additional master server '%s'.",
extra_master->server->name);
extra_master->name());
}
return server_is_master && !extra_master;
}
@ -1616,13 +1616,17 @@ bool MariaDBMonitor::switchover_check(SERVER* new_master, SERVER* current_master
current_master_ok = false;
PRINT_MXS_JSON_ERROR(error_out, NO_SERVER, current_master->name, m_monitor->name);
}
else if (!switchover_check_current(mon_curr_master, error_out))
else
{
current_master_ok = false;
MariaDBServer* found_curr_master = get_server_info(mon_curr_master);
if (switchover_check_current(found_curr_master, error_out))
{
*current_master_out = get_server_info(mon_curr_master);
}
else
{
*current_master_out = get_server_info(mon_curr_master);
current_master_ok = false;
}
}
}

View File

@ -225,8 +225,7 @@ private:
MariaDBServer** new_master_out, MariaDBServer** current_master_out,
json_t** error_out);
bool switchover_check_new(const MariaDBServer* new_master_cand, json_t** error);
bool switchover_check_current(const MXS_MONITORED_SERVER* suggested_curr_master,
json_t** error_out) const;
bool switchover_check_current(const MariaDBServer* suggested_curr_master, json_t** error_out) const;
bool do_switchover(MariaDBServer** current_master, MariaDBServer** new_master, json_t** err_out);
bool switchover_check_preferred_master(MariaDBServer* preferred, json_t** err_out);
bool switchover_demote_master(MariaDBServer* current_master,