Divide ClusterOperation to two types
The main class was getting unwieldly and too general. Dividing the fields helps adding support for other operation types. This commit leaves most data duplicated, later commits clean up the affected code.
This commit is contained in:
@ -155,7 +155,7 @@ bool SlaveStatus::should_be_copied(string* ignore_reason_out) const
|
||||
return accepted;
|
||||
}
|
||||
|
||||
ClusterOperation::ClusterOperation(OperationType type,
|
||||
ClusterOperation::ClusterOperation(OperationType type, ServerOperation* dem_op, ServerOperation* prom_op,
|
||||
MariaDBServer* promotion_target, MariaDBServer* demotion_target,
|
||||
const SlaveStatusArray& promo_target_conns,
|
||||
const SlaveStatusArray& demo_target_conns,
|
||||
@ -164,6 +164,9 @@ ClusterOperation::ClusterOperation(OperationType type,
|
||||
string& replication_user, string& replication_password,
|
||||
json_t** error, maxbase::Duration time_remaining)
|
||||
: type(type)
|
||||
, demotion(dem_op)
|
||||
, promotion(prom_op)
|
||||
, general(type, replication_user, replication_password, error, time_remaining)
|
||||
, promotion_target(promotion_target)
|
||||
, demotion_target(demotion_target)
|
||||
, demotion_target_is_master(demo_target_is_master)
|
||||
@ -179,6 +182,33 @@ ClusterOperation::ClusterOperation(OperationType type,
|
||||
{
|
||||
}
|
||||
|
||||
ClusterOperation::~ClusterOperation()
|
||||
{
|
||||
delete demotion;
|
||||
delete promotion;
|
||||
}
|
||||
|
||||
ServerOperation::ServerOperation(MariaDBServer* target, bool was_is_master,
|
||||
bool handle_events, const std::string& sql_file,
|
||||
const SlaveStatusArray& conns_to_copy)
|
||||
: target(target)
|
||||
, was_is_master(was_is_master)
|
||||
, handle_events(handle_events)
|
||||
, sql_file(sql_file)
|
||||
, conns_to_copy(conns_to_copy)
|
||||
{
|
||||
}
|
||||
|
||||
GeneralOpData::GeneralOpData(OperationType type, const string& replication_user, const string& replication_password,
|
||||
json_t** error, maxbase::Duration time_remaining)
|
||||
: type(type)
|
||||
, replication_user(replication_user)
|
||||
, replication_password(replication_password)
|
||||
, error_out(error)
|
||||
, time_remaining(time_remaining)
|
||||
{
|
||||
}
|
||||
|
||||
GtidList GtidList::from_string(const string& gtid_string)
|
||||
{
|
||||
mxb_assert(gtid_string.size());
|
||||
|
Reference in New Issue
Block a user