Don't kick out super-users when performing rejoin
When rejoining a server, preventing writes is not as essential as in switchover.
This commit is contained in:
parent
3d8475f8ed
commit
39df829384
@ -636,7 +636,7 @@ uint32_t MariaDBMonitor::do_rejoin(const ServerArray& joinable_servers, json_t**
|
||||
// the case, the following is unlikely to do damage.
|
||||
ServerOperation demotion(joinable, true, /* treat as old master */
|
||||
m_handle_event_scheduler, m_demote_sql_file);
|
||||
if (joinable->demote(general, demotion))
|
||||
if (joinable->demote(general, demotion, OperationType::REJOIN))
|
||||
{
|
||||
MXS_NOTICE("Directing standalone server '%s' to replicate from '%s'.", name, master_name);
|
||||
// A slave connection description is required. As this is the only connection, no name
|
||||
@ -837,7 +837,7 @@ bool MariaDBMonitor::switchover_perform(SwitchoverParams& op)
|
||||
|
||||
bool rval = false;
|
||||
// Step 1: Set read-only to on, flush logs, update gtid:s.
|
||||
if (demotion_target->demote(op.general, op.demotion))
|
||||
if (demotion_target->demote(op.general, op.demotion, OperationType::SWITCHOVER))
|
||||
{
|
||||
m_cluster_modified = true;
|
||||
bool catchup_and_promote_success = false;
|
||||
|
@ -1582,9 +1582,10 @@ bool MariaDBServer::promote(GeneralOpData& general, ServerOperation& promotion,
|
||||
return success;
|
||||
}
|
||||
|
||||
bool MariaDBServer::demote(GeneralOpData& general, ServerOperation& demotion)
|
||||
bool MariaDBServer::demote(GeneralOpData& general, ServerOperation& demotion, OperationType type)
|
||||
{
|
||||
mxb_assert(demotion.target == this);
|
||||
mxb_assert(type == OperationType::SWITCHOVER || type == OperationType::REJOIN);
|
||||
json_t** const error_out = general.error_out;
|
||||
bool success = false;
|
||||
|
||||
@ -1613,7 +1614,7 @@ bool MariaDBServer::demote(GeneralOpData& general, ServerOperation& demotion)
|
||||
// read_only doesn't stop them from doing writes. This does not stop them from immediately
|
||||
// logging back in but it's better than nothing. This also stops super-user writes going
|
||||
// through MaxScale.
|
||||
if (!kick_out_super_users(general))
|
||||
if (type == OperationType::SWITCHOVER && !kick_out_super_users(general))
|
||||
{
|
||||
demotion_error = true;
|
||||
}
|
||||
|
@ -383,10 +383,12 @@ public:
|
||||
/**
|
||||
* Demote this server. Removes all slave connections. If server was master, sets read_only.
|
||||
*
|
||||
* @param op Cluster operation descriptor
|
||||
* @param general General operation data
|
||||
* @param demotion Demotion-specific settings
|
||||
* @param type Which specific operation is this part of
|
||||
* @return True if successful
|
||||
*/
|
||||
bool demote(GeneralOpData& general, ServerOperation& op);
|
||||
bool demote(GeneralOpData& general, ServerOperation& demotion, OperationType type);
|
||||
|
||||
/**
|
||||
* Redirect the slave connection going to old master to replicate from new master.
|
||||
|
@ -216,7 +216,8 @@ using EventNameSet = std::unordered_set<std::string>;
|
||||
enum class OperationType
|
||||
{
|
||||
SWITCHOVER,
|
||||
FAILOVER
|
||||
FAILOVER,
|
||||
REJOIN
|
||||
};
|
||||
|
||||
class GeneralOpData
|
||||
|
Loading…
x
Reference in New Issue
Block a user