Merge branch '2.2' into develop
This commit is contained in:
@ -18,9 +18,9 @@ int main(int argc, char *argv[])
|
|||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
char result[1024];
|
char result[1024];
|
||||||
test.add_result(test.maxscales->get_maxadmin_param(0, "show dbusers \"RW Split Router\"", "User names:", result),
|
test.add_result(test.maxscales->ssh_node_f(0, true, "maxadmin show dbusers \"RW Split Router\"|grep 'User names'"),
|
||||||
"Old style objects in maxadmin commands should succeed");
|
"Old style objects in maxadmin commands should succeed");
|
||||||
test.add_result(test.maxscales->get_maxadmin_param(0, "show dbusers RW-Split-Router", "User names:", result),
|
test.add_result(test.maxscales->ssh_node_f(0, true, "maxadmin show dbusers RW-Split-Router|grep 'User names'"),
|
||||||
"New style objects in maxadmin commands should succeed");
|
"New style objects in maxadmin commands should succeed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -259,10 +259,14 @@ int main(int argc, char *argv[])
|
|||||||
/** Prepare for tests */
|
/** Prepare for tests */
|
||||||
Test->stop_timeout();
|
Test->stop_timeout();
|
||||||
Test->maxscales->connect_maxscale(0);
|
Test->maxscales->connect_maxscale(0);
|
||||||
execute_query_silent(Test->maxscales->conn_rwsplit[0], "DROP TABLE IF EXISTS test.readonly\n");
|
execute_query_silent(Test->maxscales->conn_rwsplit[0], "DROP TABLE IF EXISTS test.readonly");
|
||||||
execute_query_silent(Test->maxscales->conn_rwsplit[0], "CREATE TABLE test.readonly(id int)\n");
|
execute_query_silent(Test->maxscales->conn_rwsplit[0], "CREATE TABLE test.readonly(id int)");
|
||||||
Test->maxscales->close_maxscale_connections(0);
|
Test->maxscales->close_maxscale_connections(0);
|
||||||
|
|
||||||
|
Test->repl->connect();
|
||||||
|
Test->repl->sync_slaves();
|
||||||
|
Test->repl->disconnect();
|
||||||
|
|
||||||
/** Basic tests */
|
/** Basic tests */
|
||||||
test_basic(Test);
|
test_basic(Test);
|
||||||
|
|
||||||
|
|||||||
@ -523,10 +523,7 @@ void dcb_PrintAdminUsers(DCB *dcb)
|
|||||||
{
|
{
|
||||||
users_diagnostic(dcb, linux_users);
|
users_diagnostic(dcb, linux_users);
|
||||||
}
|
}
|
||||||
else
|
dcb_printf(dcb, "\n");
|
||||||
{
|
|
||||||
dcb_printf(dcb, "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
dcb_printf(dcb, "Created network accounts (insecure): ");
|
dcb_printf(dcb, "Created network accounts (insecure): ");
|
||||||
|
|
||||||
@ -534,8 +531,5 @@ void dcb_PrintAdminUsers(DCB *dcb)
|
|||||||
{
|
{
|
||||||
users_diagnostic(dcb, inet_users);
|
users_diagnostic(dcb, inet_users);
|
||||||
}
|
}
|
||||||
else
|
dcb_printf(dcb, "\n");
|
||||||
{
|
|
||||||
dcb_printf(dcb, "\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1939,49 +1939,50 @@ void check_maxscale_schema_replication(MXS_MONITOR *monitor)
|
|||||||
bool MariaDBMonitor::mon_process_failover(bool* cluster_modified_out)
|
bool MariaDBMonitor::mon_process_failover(bool* cluster_modified_out)
|
||||||
{
|
{
|
||||||
ss_dassert(*cluster_modified_out == false);
|
ss_dassert(*cluster_modified_out == false);
|
||||||
|
if (config_get_global_options()->passive ||
|
||||||
|
(master && SERVER_IS_MASTER(master->server)))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
bool rval = true;
|
bool rval = true;
|
||||||
MXS_CONFIG* cnf = config_get_global_options();
|
|
||||||
MXS_MONITORED_SERVER* failed_master = NULL;
|
MXS_MONITORED_SERVER* failed_master = NULL;
|
||||||
|
|
||||||
if (!cnf->passive)
|
for (MXS_MONITORED_SERVER *ptr = m_monitor_base->monitored_servers; ptr; ptr = ptr->next)
|
||||||
{
|
{
|
||||||
for (MXS_MONITORED_SERVER *ptr = m_monitor_base->monitored_servers; ptr; ptr = ptr->next)
|
if (ptr->new_event && ptr->server->last_event == MASTER_DOWN_EVENT)
|
||||||
{
|
{
|
||||||
if (ptr->new_event && ptr->server->last_event == MASTER_DOWN_EVENT)
|
if (failed_master)
|
||||||
{
|
{
|
||||||
if (failed_master)
|
MXS_ALERT("Multiple failed master servers detected: "
|
||||||
{
|
"'%s' is the first master to fail but server "
|
||||||
MXS_ALERT("Multiple failed master servers detected: "
|
"'%s' has also triggered a master_down event.",
|
||||||
"'%s' is the first master to fail but server "
|
failed_master->server->unique_name,
|
||||||
"'%s' has also triggered a master_down event.",
|
ptr->server->unique_name);
|
||||||
failed_master->server->unique_name,
|
return false;
|
||||||
ptr->server->unique_name);
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ptr->server->active_event)
|
if (ptr->server->active_event)
|
||||||
|
{
|
||||||
|
// MaxScale was active when the event took place
|
||||||
|
failed_master = ptr;
|
||||||
|
}
|
||||||
|
else if (m_monitor_base->master_has_failed)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If a master_down event was triggered when this MaxScale was
|
||||||
|
* passive, we need to execute the failover script again if no new
|
||||||
|
* masters have appeared.
|
||||||
|
*/
|
||||||
|
int64_t timeout = SEC_TO_HB(m_failover_timeout);
|
||||||
|
int64_t t = hkheartbeat - ptr->server->triggered_at;
|
||||||
|
|
||||||
|
if (t > timeout)
|
||||||
{
|
{
|
||||||
// MaxScale was active when the event took place
|
MXS_WARNING("Failover of server '%s' did not take place within "
|
||||||
|
"%u seconds, failover needs to be re-triggered",
|
||||||
|
ptr->server->unique_name, m_failover_timeout);
|
||||||
failed_master = ptr;
|
failed_master = ptr;
|
||||||
}
|
}
|
||||||
else if (m_monitor_base->master_has_failed)
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* If a master_down event was triggered when this MaxScale was
|
|
||||||
* passive, we need to execute the failover script again if no new
|
|
||||||
* masters have appeared.
|
|
||||||
*/
|
|
||||||
int64_t timeout = SEC_TO_HB(m_failover_timeout);
|
|
||||||
int64_t t = hkheartbeat - ptr->server->triggered_at;
|
|
||||||
|
|
||||||
if (t > timeout)
|
|
||||||
{
|
|
||||||
MXS_WARNING("Failover of server '%s' did not take place within "
|
|
||||||
"%u seconds, failover needs to be re-triggered",
|
|
||||||
ptr->server->unique_name, m_failover_timeout);
|
|
||||||
failed_master = ptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user