fix typos from open github issue
This commit is contained in:
@ -36,7 +36,7 @@ namespace election {
|
||||
/**********should removed after a barrier version bigger than 3.1**********/
|
||||
bool ObElection::IS_CLUSTER_MIN_VSERDION_LESS_THAN_3_1 = true;
|
||||
/**************************************************************************************************/
|
||||
const char* const ObElection::REVOKE_REASON_STR[REVOKE_TYPE_MAX] = {"leader lease expired",
|
||||
const char *const ObElection::REVOKE_REASON_STR[REVOKE_TYPE_MAX] = {"leader lease expired",
|
||||
"self is not candidate",
|
||||
"disk error",
|
||||
"clog reconfirm timeout",
|
||||
@ -89,9 +89,9 @@ void ObElection::reset()
|
||||
cached_lease_end_ = 0;
|
||||
}
|
||||
|
||||
int ObElection::init(const ObPartitionKey& partition, const ObAddr& self, ObIElectionRpc* rpc, ObTimeWheel* tw,
|
||||
const int64_t replica_num, ObIElectionCallback* election_cb, ObIElectionGroupMgr* eg_mgr,
|
||||
ObElectionEventHistoryArray* event_history_array)
|
||||
int ObElection::init(const ObPartitionKey &partition, const ObAddr &self, ObIElectionRpc *rpc, ObTimeWheel *tw,
|
||||
const int64_t replica_num, ObIElectionCallback *election_cb, ObIElectionGroupMgr *eg_mgr,
|
||||
ObElectionEventHistoryArray *event_history_array)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -289,7 +289,7 @@ int ObElection::stop()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
int ObElection::process_devote_prepare_(const ObElectionMsgDEPrepare &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -335,7 +335,7 @@ int ObElection::process_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
int ObElection::local_handle_devote_prepare_(const ObElectionMsgDEPrepare &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -370,7 +370,7 @@ int ObElection::local_handle_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_devote_prepare(const ObElectionMsgDEPrepare& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_devote_prepare(const ObElectionMsgDEPrepare &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -394,7 +394,7 @@ int ObElection::handle_devote_prepare(const ObElectionMsgDEPrepare& msg, ObElect
|
||||
} else if (current_leader_.is_valid() && OB_SUCCESS == verify_leader_valid_(cur_ts)) {
|
||||
// if current leader is valid, some one ask for decentralized voting, meaning the requester don't know the leader
|
||||
// notify him who is leader
|
||||
const ObAddr& sender = msg.get_sender();
|
||||
const ObAddr &sender = msg.get_sender();
|
||||
if (current_leader_ != sender && self_ != sender) {
|
||||
if (OB_FAIL(notify_leader_(sender))) {
|
||||
ELECT_ASYNC_LOG_(WARN, "notify leader error", K(ret), "election", *this, K(msg));
|
||||
@ -429,7 +429,7 @@ int ObElection::handle_devote_prepare(const ObElectionMsgDEPrepare& msg, ObElect
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_devote_vote_(const ObElectionMsgDEVote& msg)
|
||||
int ObElection::process_devote_vote_(const ObElectionMsgDEVote &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -469,7 +469,7 @@ int ObElection::process_devote_vote_(const ObElectionMsgDEVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_devote_vote_(const ObElectionMsgDEVote& msg)
|
||||
int ObElection::local_handle_devote_vote_(const ObElectionMsgDEVote &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -500,7 +500,7 @@ int ObElection::local_handle_devote_vote_(const ObElectionMsgDEVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_devote_vote(const ObElectionMsgDEVote& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_devote_vote(const ObElectionMsgDEVote &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -538,7 +538,7 @@ int ObElection::handle_devote_vote(const ObElectionMsgDEVote& msg, ObElectionRpc
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
int ObElection::process_devote_success_(const ObElectionMsgDESuccess &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -554,7 +554,7 @@ int ObElection::process_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
ELECT_ASYNC_LOG_(WARN, "invalid argument", K(ret), K_(partition), K(msg));
|
||||
} else {
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
const ObAddr& msg_leader = msg.get_leader();
|
||||
const ObAddr &msg_leader = msg.get_leader();
|
||||
const int64_t msg_t1 = msg.get_T1_timestamp();
|
||||
const int64_t msg_real_t1 = get_msg_real_T1_(msg);
|
||||
const int64_t lease_time = msg.get_lease_time();
|
||||
@ -582,7 +582,7 @@ int ObElection::process_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
(void)update_info_from_eg_();
|
||||
}
|
||||
ret = OB_ELECTION_WARN_PROTOCOL_ERROR;
|
||||
FORCE_ELECT_LOG(WARN, "leader available but recevive devote_success message", K(ret), K(*this), K(msg));
|
||||
FORCE_ELECT_LOG(WARN, "leader available but receive devote_success message", K(ret), K(*this), K(msg));
|
||||
}
|
||||
} else if (NULL != election_group_) {
|
||||
// current leader is invalid, need move out from election group
|
||||
@ -618,7 +618,7 @@ int ObElection::process_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
int ObElection::local_handle_devote_success_(const ObElectionMsgDESuccess &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -633,7 +633,7 @@ int ObElection::local_handle_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
ELECT_ASYNC_LOG_(WARN, "invalid argument", K(ret), K_(partition), K(msg));
|
||||
} else if (OB_FAIL(process_devote_success_(msg))) {
|
||||
ELECT_ASYNC_LOG_(WARN, "process_devote_success_ faield", K(ret), K_(partition), K(msg));
|
||||
ELECT_ASYNC_LOG_(WARN, "process_devote_success_ failed", K(ret), K_(partition), K(msg));
|
||||
} else {
|
||||
}
|
||||
|
||||
@ -645,7 +645,7 @@ int ObElection::local_handle_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_devote_success(const ObElectionMsgDESuccess& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_devote_success(const ObElectionMsgDESuccess &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -679,7 +679,7 @@ int ObElection::handle_devote_success(const ObElectionMsgDESuccess& msg, ObElect
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
int ObElection::process_vote_prepare_(const ObElectionMsgPrepare &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -770,7 +770,7 @@ int ObElection::process_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
int ObElection::local_handle_vote_prepare_(const ObElectionMsgPrepare &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -799,7 +799,7 @@ int ObElection::local_handle_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_vote_prepare(const ObElectionMsgPrepare& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_vote_prepare(const ObElectionMsgPrepare &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -838,7 +838,7 @@ int ObElection::handle_vote_prepare(const ObElectionMsgPrepare& msg, ObElectionR
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_vote_vote_(const ObElectionMsgVote& msg)
|
||||
int ObElection::process_vote_vote_(const ObElectionMsgVote &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -908,7 +908,7 @@ int ObElection::process_vote_vote_(const ObElectionMsgVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_vote_vote_(const ObElectionMsgVote& msg)
|
||||
int ObElection::local_handle_vote_vote_(const ObElectionMsgVote &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -941,7 +941,7 @@ int ObElection::local_handle_vote_vote_(const ObElectionMsgVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_vote_vote(const ObElectionMsgVote& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_vote_vote(const ObElectionMsgVote &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -981,13 +981,13 @@ int ObElection::handle_vote_vote(const ObElectionMsgVote& msg, ObElectionRpcResu
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::process_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
int ObElection::process_vote_success_(const ObElectionMsgSuccess &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
if (msg.get_last_leader_epoch() != OB_INVALID_TIMESTAMP &&
|
||||
(max_leader_epoch_ever_seen_ == OB_INVALID_TIMESTAMP || // avoid OB_INVALID_TIMESTAMP definded too large
|
||||
(max_leader_epoch_ever_seen_ == OB_INVALID_TIMESTAMP || // avoid OB_INVALID_TIMESTAMP defined too large
|
||||
msg.get_last_leader_epoch() > max_leader_epoch_ever_seen_)) {
|
||||
max_leader_epoch_ever_seen_ = msg.get_last_leader_epoch();
|
||||
}
|
||||
@ -1011,8 +1011,8 @@ int ObElection::process_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
const int64_t lease_time = msg.get_lease_time();
|
||||
const int64_t now_lease_time = (lease_time == 0) ? (OB_ELECTION_130_LEASE_TIME) : lease_time;
|
||||
|
||||
const ObAddr& msg_new_leader = msg.get_new_leader();
|
||||
const ObAddr& msg_cur_leader = msg.get_cur_leader();
|
||||
const ObAddr &msg_new_leader = msg.get_new_leader();
|
||||
const ObAddr &msg_cur_leader = msg.get_cur_leader();
|
||||
ObAddr cur_leader;
|
||||
|
||||
if (!IN_T0_RANGE(cur_ts, msg_real_t1)) {
|
||||
@ -1133,7 +1133,7 @@ int ObElection::process_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::local_handle_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
int ObElection::local_handle_vote_success_(const ObElectionMsgSuccess &msg)
|
||||
{
|
||||
// requires caller to lock and check
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1162,7 +1162,7 @@ int ObElection::local_handle_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_vote_success(const ObElectionMsgSuccess& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_vote_success(const ObElectionMsgSuccess &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1198,7 +1198,7 @@ int ObElection::handle_vote_success(const ObElectionMsgSuccess& msg, ObElectionR
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_query_leader(const ObElectionQueryLeader& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_query_leader(const ObElectionQueryLeader &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1215,10 +1215,10 @@ int ObElection::handle_query_leader(const ObElectionQueryLeader& msg, ObElection
|
||||
ELECT_ASYNC_LOG_(WARN, "election is not running", K(ret), K_(partition), K(msg));
|
||||
} else if (!msg.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
ELECT_ASYNC_LOG_(WARN, "invalid argumenet", K(ret), K_(partition), K(msg));
|
||||
ELECT_ASYNC_LOG_(WARN, "invalid argument", K(ret), K_(partition), K(msg));
|
||||
} else {
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
const ObAddr& sender = msg.get_sender();
|
||||
const ObAddr &sender = msg.get_sender();
|
||||
// defense
|
||||
if (OB_SUCC(verify_leader_valid_(cur_ts)) // leader must be valid
|
||||
&& current_leader_ != sender // sender can't be leader
|
||||
@ -1236,7 +1236,7 @@ int ObElection::handle_query_leader(const ObElectionQueryLeader& msg, ObElection
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::handle_query_leader_response(const ObElectionQueryLeaderResponse& msg, ObElectionRpcResult& result)
|
||||
int ObElection::handle_query_leader_response(const ObElectionQueryLeaderResponse &msg, ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1258,7 +1258,7 @@ int ObElection::handle_query_leader_response(const ObElectionQueryLeaderResponse
|
||||
ret = OB_STATE_NOT_MATCH;
|
||||
ELECT_ASYNC_LOG_(WARN, "already in election_group, ignore msg", K(ret), "election", *this, K(msg));
|
||||
} else {
|
||||
const ObAddr& msg_leader = msg.get_leader();
|
||||
const ObAddr &msg_leader = msg.get_leader();
|
||||
const int64_t t1 = msg.get_t1();
|
||||
const int64_t epoch = msg.get_epoch();
|
||||
const int64_t lease_time = msg.get_lease_time();
|
||||
@ -1313,7 +1313,7 @@ int ObElection::handle_query_leader_response(const ObElectionQueryLeaderResponse
|
||||
}
|
||||
|
||||
int ObElection::set_candidate(
|
||||
const int64_t replica_num, const ObMemberList& curr_mlist, const int64_t membership_version)
|
||||
const int64_t replica_num, const ObMemberList &curr_mlist, const int64_t membership_version)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1397,7 +1397,7 @@ int ObElection::force_leader_async()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::change_leader_async(const ObAddr& leader, ObTsWindows& changing_leader_windows)
|
||||
int ObElection::change_leader_async(const ObAddr &leader, ObTsWindows &changing_leader_windows)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1451,7 +1451,7 @@ int ObElection::change_leader_to_self()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_curr_candidate(ObMemberList& mlist) const
|
||||
int ObElection::get_curr_candidate(ObMemberList &mlist) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1470,7 +1470,7 @@ int ObElection::get_curr_candidate(ObMemberList& mlist) const
|
||||
|
||||
// only leader could call this interface
|
||||
// return OB_NOT_MASTER if caller is follower
|
||||
int ObElection::get_valid_candidate(ObMemberList& mlist) const
|
||||
int ObElection::get_valid_candidate(ObMemberList &mlist) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1503,8 +1503,8 @@ int ObElection::get_valid_candidate(ObMemberList& mlist) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_leader(ObAddr& leader, int64_t& leader_epoch, bool& is_elected_by_changing_leader,
|
||||
ObTsWindows& changing_leader_windows) const
|
||||
int ObElection::get_leader(ObAddr &leader, int64_t &leader_epoch, bool &is_elected_by_changing_leader,
|
||||
ObTsWindows &changing_leader_windows) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1534,7 +1534,7 @@ int ObElection::get_leader(ObAddr& leader, int64_t& leader_epoch, bool& is_elect
|
||||
}
|
||||
|
||||
int ObElection::get_leader(
|
||||
ObAddr& leader, ObAddr& previous_leader, int64_t& leader_epoch, bool& is_elected_by_changing_leader) const
|
||||
ObAddr &leader, ObAddr &previous_leader, int64_t &leader_epoch, bool &is_elected_by_changing_leader) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1561,7 +1561,7 @@ int ObElection::get_leader(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_current_leader(ObAddr& leader) const
|
||||
int ObElection::get_current_leader(ObAddr &leader) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1578,7 +1578,7 @@ int ObElection::get_current_leader(ObAddr& leader) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_election_info(ObElectionInfo& election_info) const
|
||||
int ObElection::get_election_info(ObElectionInfo &election_info) const
|
||||
{
|
||||
RLockGuard guard(lock_);
|
||||
election_info = *this;
|
||||
@ -1651,7 +1651,7 @@ int ObElection::cal_valid_candidates_()
|
||||
}
|
||||
|
||||
// check if the corresponding lease is valid
|
||||
bool ObElection::verify_lease_start_valid_(const ObAddr& leader, const int64_t logic_lease_start_t1) const
|
||||
bool ObElection::verify_lease_start_valid_(const ObAddr &leader, const int64_t logic_lease_start_t1) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
if (!leader.is_valid() || logic_lease_start_t1 <= 0) {
|
||||
@ -1671,7 +1671,7 @@ bool ObElection::verify_lease_start_valid_(const ObAddr& leader, const int64_t l
|
||||
|
||||
// call this interface to assign a leader
|
||||
// called when partition is created
|
||||
int ObElection::leader_takeover(const ObAddr& leader, const int64_t lease_start, int64_t& leader_epoch)
|
||||
int ObElection::leader_takeover(const ObAddr &leader, const int64_t lease_start, int64_t &leader_epoch)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t logic_t1 = ((lease_start - get_election_time_offset()) / T_ELECT2) * T_ELECT2;
|
||||
@ -1730,7 +1730,7 @@ int ObElection::force_leader_async_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::change_leader_async_(const ObAddr& server, ObTsWindows& changing_leader_windows)
|
||||
int ObElection::change_leader_async_(const ObAddr &server, ObTsWindows &changing_leader_windows)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int64_t delay = 0;
|
||||
@ -1810,7 +1810,7 @@ int ObElection::update_info_from_eg_()
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
if (OB_FAIL(election_group_->get_leader_lease_info(
|
||||
partition_, eg_part_array_idx_, cur_ts, eg_lease_end, eg_takeover_t1_ts))) {
|
||||
FORCE_ELECT_LOG(WARN, "get_leader_lease_info failed", K(ret), K_(partition), "eleciton", *this);
|
||||
FORCE_ELECT_LOG(WARN, "get_leader_lease_info failed", K(ret), K_(partition), "election", *this);
|
||||
} else if (eg_lease_end < 0) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
FORCE_ELECT_LOG(ERROR, "eg_lease_end is invalid", K(ret), K(eg_lease_end), "election", *this);
|
||||
@ -1847,7 +1847,7 @@ void ObElection::change_leader_clear_()
|
||||
}
|
||||
|
||||
// check if server is leader, check role and lease also
|
||||
bool ObElection::is_real_leader_(const ObAddr& server) const
|
||||
bool ObElection::is_real_leader_(const ObAddr &server) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -1879,7 +1879,7 @@ bool ObElection::check_if_allowed_to_move_into_eg_()
|
||||
return bool_ret;
|
||||
}
|
||||
|
||||
int ObElection::leader_elected_(const ObAddr& leader, const int64_t logic_T1_timestamp, const int64_t lease_time,
|
||||
int ObElection::leader_elected_(const ObAddr &leader, const int64_t logic_T1_timestamp, const int64_t lease_time,
|
||||
const bool is_elected_by_changing_leader)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1959,7 +1959,7 @@ int ObElection::leader_elected_(const ObAddr& leader, const int64_t logic_T1_tim
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::leader_takeover_(const ObAddr& leader, const int64_t epoch, const int64_t logic_t1,
|
||||
int ObElection::leader_takeover_(const ObAddr &leader, const int64_t epoch, const int64_t logic_t1,
|
||||
const int64_t lease_time, const bool is_elected_by_changing_leader)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1995,7 +1995,7 @@ int ObElection::leader_takeover_(const ObAddr& leader, const int64_t epoch, cons
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::leader_reappoint_(const ObAddr& leader, const int64_t logic_t1, const int64_t lease_time)
|
||||
int ObElection::leader_reappoint_(const ObAddr &leader, const int64_t logic_t1, const int64_t lease_time)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -2032,7 +2032,7 @@ int ObElection::verify_leader_valid_(const int64_t cur_ts) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_leader_(ObAddr& leader) const
|
||||
int ObElection::get_leader_(ObAddr &leader) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -2185,12 +2185,12 @@ bool ObElection::lease_expired_too_long_(const int64_t cur_ts) const
|
||||
return (cur_ts - leader_revoke_timestamp_ > EXPIRED_TIME_FOR_WARNING);
|
||||
}
|
||||
|
||||
void ObElection::set_unconfirmed_leader_(const ObAddr& unconfirmed_leader)
|
||||
void ObElection::set_unconfirmed_leader_(const ObAddr &unconfirmed_leader)
|
||||
{
|
||||
unconfirmed_leader_ = unconfirmed_leader;
|
||||
}
|
||||
|
||||
int ObElection::move_out_election_group(const ObElectionGroupId& eg_id)
|
||||
int ObElection::move_out_election_group(const ObElectionGroupId &eg_id)
|
||||
{
|
||||
// called from election group
|
||||
int ret = OB_SUCCESS;
|
||||
@ -2261,16 +2261,16 @@ int ObElection::move_out_election_group_unlock_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::move_into_election_group(const ObElectionGroupId& eg_id)
|
||||
int ObElection::move_into_election_group(const ObElectionGroupId &eg_id)
|
||||
{
|
||||
WLockGuard guard(lock_);
|
||||
return move_into_election_group_unlock_(eg_id);
|
||||
}
|
||||
|
||||
int ObElection::move_into_election_group_unlock_(const ObElectionGroupId& eg_id)
|
||||
int ObElection::move_into_election_group_unlock_(const ObElectionGroupId &eg_id)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObIElectionGroup* election_group = NULL;
|
||||
ObIElectionGroup *election_group = NULL;
|
||||
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
@ -2292,7 +2292,7 @@ int ObElection::move_into_election_group_unlock_(const ObElectionGroupId& eg_id)
|
||||
}
|
||||
} else if (!current_leader_.is_valid() || current_leader_ != eg_id.get_server() ||
|
||||
!is_real_leader_(current_leader_)) {
|
||||
// allow follower moive in only if leader is valid and match group's leader
|
||||
// allow follower move in only if leader is valid and match group's leader
|
||||
ret = OB_STATE_NOT_MATCH;
|
||||
if (REACH_TIME_INTERVAL(100 * 1000)) {
|
||||
FORCE_ELECT_LOG(WARN, "current_leader_ not match with eg_id", K(ret), K(eg_id), "election", *this);
|
||||
@ -2502,7 +2502,7 @@ bool ObElection::can_elect_new_leader_() const
|
||||
bool_ret = false;
|
||||
} else if (common::PRIMARY_CLUSTER == cluster_type ||
|
||||
ObMultiClusterUtil::is_cluster_private_table(partition_.get_table_id())) {
|
||||
// main datebase or private table allow elect
|
||||
// main database or private table allow elect
|
||||
bool_ret = true;
|
||||
} else if (share::OBSERVER_INVALID_STATUS == server_status) {
|
||||
// server status unknown, non-private table not allow to elect
|
||||
@ -2538,7 +2538,7 @@ void ObElection::run_gt1_task(const int64_t real_T1_timestamp)
|
||||
election_time_offset_ = new_election_time_offset_;
|
||||
temp_election_time_offset_ = election_time_offset_;
|
||||
takeover_t1_timestamp_ = 0;
|
||||
ELECT_ASYNC_LOG(INFO, "be dead, parameters conversion is compeleted", "election", *this);
|
||||
ELECT_ASYNC_LOG(INFO, "be dead, parameters conversion is completed", "election", *this);
|
||||
} else {
|
||||
}
|
||||
/*********************************************************************************************/
|
||||
@ -2902,7 +2902,7 @@ void ObElection::run_gt1_task(const int64_t real_T1_timestamp)
|
||||
/*********************************************************************************************/
|
||||
}
|
||||
|
||||
int ObElection::send_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
int ObElection::send_devote_prepare_(const ObElectionMsgDEPrepare &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -2927,7 +2927,7 @@ int ObElection::send_devote_prepare_(const ObElectionMsgDEPrepare& msg)
|
||||
}
|
||||
|
||||
// add lease time, make sure follower won't vote for others
|
||||
int ObElection::send_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
int ObElection::send_vote_prepare_(const ObElectionMsgPrepare &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObAddr new_leader;
|
||||
@ -2951,7 +2951,7 @@ int ObElection::send_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::send_change_leader_vote_prepare_(const ObElectionMsgPrepare& msg)
|
||||
int ObElection::send_change_leader_vote_prepare_(const ObElectionMsgPrepare &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3148,7 +3148,7 @@ void ObElection::run_gt2_task(const int64_t real_T2_timestamp)
|
||||
}
|
||||
}
|
||||
|
||||
int ObElection::get_decentralized_candidate_(ObAddr& server, ObElectionPriority& priority, int64_t& lease_time)
|
||||
int ObElection::get_decentralized_candidate_(ObAddr &server, ObElectionPriority &priority, int64_t &lease_time)
|
||||
{
|
||||
int ret = msg_pool_.get_decentralized_candidate(server, priority, replica_num_, T1_timestamp_, lease_time);
|
||||
if (OB_FAIL(ret)) {
|
||||
@ -3157,7 +3157,7 @@ int ObElection::get_decentralized_candidate_(ObAddr& server, ObElectionPriority&
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_centralized_candidate_(ObAddr& cur_leader, ObAddr& new_leader, int64_t msg_t1)
|
||||
int ObElection::get_centralized_candidate_(ObAddr &cur_leader, ObAddr &new_leader, int64_t msg_t1)
|
||||
{
|
||||
int ret = msg_pool_.get_centralized_candidate(cur_leader, new_leader, msg_t1);
|
||||
if (OB_FAIL(ret)) {
|
||||
@ -3166,7 +3166,7 @@ int ObElection::get_centralized_candidate_(ObAddr& cur_leader, ObAddr& new_leade
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::send_devote_vote_(const ObAddr& server, const ObElectionMsgDEVote& msg)
|
||||
int ObElection::send_devote_vote_(const ObAddr &server, const ObElectionMsgDEVote &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3281,7 +3281,7 @@ int ObElection::check_centralized_majority_()
|
||||
} else if (is_candidate_(self_) && is_real_leader_(self_) && cur_leader == current_leader_) {
|
||||
bool change_leader = false;
|
||||
if (cur_leader != new_leader) { // change leader
|
||||
// need new leader's message and its prioeity
|
||||
// need new leader's message and its priority
|
||||
if (!new_leader_priority.is_valid()) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
FORCE_ELECT_LOG(WARN, "change leader but new leader priority is invalid", K(ret), K(new_leader_priority));
|
||||
@ -3329,7 +3329,7 @@ int ObElection::check_centralized_majority_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::send_vote_vote_(const ObAddr& server, const ObElectionMsgVote& msg)
|
||||
int ObElection::send_vote_vote_(const ObAddr &server, const ObElectionMsgVote &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3348,7 +3348,7 @@ int ObElection::send_vote_vote_(const ObAddr& server, const ObElectionMsgVote& m
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::notify_leader_(const ObAddr& server)
|
||||
int ObElection::notify_leader_(const ObAddr &server)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int64_t lease_time = 0;
|
||||
@ -3448,7 +3448,7 @@ void ObElection::run_gt3_task(const int64_t real_T3_timestamp)
|
||||
}
|
||||
}
|
||||
|
||||
int ObElection::check_decentralized_majority_(ObAddr& new_leader, int64_t& ticket)
|
||||
int ObElection::check_decentralized_majority_(ObAddr &new_leader, int64_t &ticket)
|
||||
{
|
||||
int ret = msg_pool_.check_decentralized_majority(new_leader, ticket, replica_num_, T1_timestamp_);
|
||||
if (OB_FAIL(ret)) {
|
||||
@ -3458,7 +3458,7 @@ int ObElection::check_decentralized_majority_(ObAddr& new_leader, int64_t& ticke
|
||||
}
|
||||
|
||||
// return OB_SUCCESS, avoid no leader
|
||||
int ObElection::collect_valid_candidates_(const ObElectionMsgVote& msg)
|
||||
int ObElection::collect_valid_candidates_(const ObElectionMsgVote &msg)
|
||||
{
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
|
||||
@ -3487,7 +3487,7 @@ int ObElection::collect_valid_candidates_(const ObElectionMsgVote& msg)
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
|
||||
int ObElection::send_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
int ObElection::send_devote_success_(const ObElectionMsgDESuccess &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3506,7 +3506,7 @@ int ObElection::send_devote_success_(const ObElectionMsgDESuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::send_vote_success_(const ObElectionMsgSuccess& msg)
|
||||
int ObElection::send_vote_success_(const ObElectionMsgSuccess &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3620,7 +3620,7 @@ void ObElection::run_change_leader_task(const int64_t real_T1_timestamp)
|
||||
}
|
||||
|
||||
int ObElection::post_election_msg_(
|
||||
const common::ObMemberList& mlist, const common::ObPartitionKey& partition, const ObElectionMsg& msg)
|
||||
const common::ObMemberList &mlist, const common::ObPartitionKey &partition, const ObElectionMsg &msg)
|
||||
{
|
||||
int ret = common::OB_SUCCESS;
|
||||
common::ObAddr server;
|
||||
@ -3653,7 +3653,7 @@ int ObElection::post_election_msg_(
|
||||
}
|
||||
|
||||
int ObElection::post_election_msg_(
|
||||
const common::ObAddr& server, const common::ObPartitionKey& partition, const ObElectionMsg& msg)
|
||||
const common::ObAddr &server, const common::ObPartitionKey &partition, const ObElectionMsg &msg)
|
||||
{
|
||||
int ret = common::OB_SUCCESS;
|
||||
const int64_t dst_cluster_id = obrpc::ObRpcNetHandler::CLUSTER_ID;
|
||||
@ -3694,7 +3694,7 @@ bool ObElection::in_reappoint_period_(const int64_t ts)
|
||||
return bool_ret;
|
||||
}
|
||||
|
||||
void ObElection::get_change_leader_window_(const int64_t ts, ObTsWindows& windows) const
|
||||
void ObElection::get_change_leader_window_(const int64_t ts, ObTsWindows &windows) const
|
||||
{
|
||||
const int64_t T_SWITCH_LEADER_RESERVED = ObServerConfig::get_instance().trx_force_kill_threshold;
|
||||
if (!GCONF.enable_smooth_leader_switch) {
|
||||
@ -3704,7 +3704,7 @@ void ObElection::get_change_leader_window_(const int64_t ts, ObTsWindows& window
|
||||
}
|
||||
}
|
||||
|
||||
int ObElection::get_priority(ObElectionPriority& priority) const
|
||||
int ObElection::get_priority(ObElectionPriority &priority) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -3719,7 +3719,7 @@ int ObElection::get_priority(ObElectionPriority& priority) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElection::get_timestamp(int64_t& gts, ObAddr& leader) const
|
||||
int ObElection::get_timestamp(int64_t >s, ObAddr &leader) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
RLockGuard guard(lock_);
|
||||
@ -3755,20 +3755,20 @@ int ObElection::get_timestamp(int64_t& gts, ObAddr& leader) const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int64_t ObElection::get_msg_real_T1_(const ObElectionVoteMsg& msg) const
|
||||
int64_t ObElection::get_msg_real_T1_(const ObElectionVoteMsg &msg) const
|
||||
{
|
||||
int64_t result_ts = OB_INVALID_TIMESTAMP;
|
||||
// is msg is about change leader, T1 is strictly integer multiples of T_ELECT2
|
||||
// otherwise, just reduce election_time_offset_
|
||||
if ((msg.get_msg_type() == ObElectionMsgType::OB_ELECTION_VOTE_PREPARE &&
|
||||
static_cast<const ObElectionMsgPrepare&>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgPrepare&>(msg).get_new_leader()) ||
|
||||
static_cast<const ObElectionMsgPrepare &>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgPrepare &>(msg).get_new_leader()) ||
|
||||
(msg.get_msg_type() == ObElectionMsgType::OB_ELECTION_VOTE_VOTE &&
|
||||
static_cast<const ObElectionMsgVote&>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgVote&>(msg).get_new_leader()) ||
|
||||
static_cast<const ObElectionMsgVote &>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgVote &>(msg).get_new_leader()) ||
|
||||
(msg.get_msg_type() == ObElectionMsgType::OB_ELECTION_VOTE_SUCCESS &&
|
||||
static_cast<const ObElectionMsgSuccess&>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgSuccess&>(msg).get_new_leader())) {
|
||||
static_cast<const ObElectionMsgSuccess &>(msg).get_cur_leader() !=
|
||||
static_cast<const ObElectionMsgSuccess &>(msg).get_new_leader())) {
|
||||
result_ts = (msg.get_T1_timestamp() + election_time_offset_) / T_ELECT2 * T_ELECT2;
|
||||
} else {
|
||||
result_ts = real_ts_(msg.get_T1_timestamp());
|
||||
@ -3787,7 +3787,7 @@ int64_t ObElection::logic_ts_(int64_t real_ts) const
|
||||
}
|
||||
|
||||
/**********should removed after a barrier version bigger than 3.1**********/
|
||||
void ObElection::insert_physical_condition_into_msg_(const ObElectionMsg& msg)
|
||||
void ObElection::insert_physical_condition_into_msg_(const ObElectionMsg &msg)
|
||||
{
|
||||
if (OB_SYS_TENANT_ID != extract_tenant_id(partition_.get_table_id())) {
|
||||
int64_t send_timestamp = msg.get_send_timestamp();
|
||||
@ -3811,12 +3811,12 @@ void ObElection::insert_physical_condition_into_msg_(const ObElectionMsg& msg)
|
||||
cond <<= 61;
|
||||
cond &= 0x6000000000000000;
|
||||
send_timestamp |= cond;
|
||||
const_cast<ObElectionMsg&>(msg).set_send_timestamp(send_timestamp);
|
||||
const_cast<ObElectionMsg &>(msg).set_send_timestamp(send_timestamp);
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
PhysicalCondition ObElection::fetch_others_condition_(const ObElectionMsg& msg)
|
||||
PhysicalCondition ObElection::fetch_others_condition_(const ObElectionMsg &msg)
|
||||
{
|
||||
int64_t send_timestamp = msg.get_send_timestamp();
|
||||
int64_t condition = send_timestamp & 0x6000000000000000;
|
||||
@ -3841,7 +3841,7 @@ PhysicalCondition ObElection::fetch_others_condition_(const ObElectionMsg& msg)
|
||||
break;
|
||||
}
|
||||
send_timestamp &= 0x9fffffffffffffff;
|
||||
const_cast<ObElectionMsg&>(msg).set_send_timestamp(send_timestamp);
|
||||
const_cast<ObElectionMsg &>(msg).set_send_timestamp(send_timestamp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -3859,7 +3859,7 @@ void ObElection::register_gt1_with_neccessary_retry_(int64_t next_t1_timestamp)
|
||||
} while (OB_INVALID_ARGUMENT == temp_ret && delay < 0);
|
||||
}
|
||||
|
||||
bool ObElection::update_condition_(const ObElectionMsg& msg, const int64_t msg_t1)
|
||||
bool ObElection::update_condition_(const ObElectionMsg &msg, const int64_t msg_t1)
|
||||
{
|
||||
PhysicalCondition cond = fetch_others_condition_(msg);
|
||||
if (physical_condition_ < cond) {
|
||||
|
||||
@ -38,10 +38,10 @@ using namespace common;
|
||||
|
||||
namespace election {
|
||||
|
||||
int ObElectionGroup::init(const ObElectionGroupId& eg_id, const ObAddr& self, const uint64_t tenant_id,
|
||||
const common::ObMemberList& sorted_member_list, const int64_t replica_num, ObIElectionRpc* rpc, ObTimeWheel* tw,
|
||||
ObIElectionMgr* election_mgr, ObElectionGroupCache* election_group_cache, ObIElectionGroupPriorityGetter* eg_cb,
|
||||
ObIElectionGroupMgr* eg_mgr)
|
||||
int ObElectionGroup::init(const ObElectionGroupId &eg_id, const ObAddr &self, const uint64_t tenant_id,
|
||||
const common::ObMemberList &sorted_member_list, const int64_t replica_num, ObIElectionRpc *rpc, ObTimeWheel *tw,
|
||||
ObIElectionMgr *election_mgr, ObElectionGroupCache *election_group_cache, ObIElectionGroupPriorityGetter *eg_cb,
|
||||
ObIElectionGroupMgr *eg_mgr)
|
||||
{
|
||||
// init for leader election group
|
||||
int ret = OB_SUCCESS;
|
||||
@ -97,11 +97,11 @@ int ObElectionGroup::init(const ObElectionGroupId& eg_id, const ObAddr& self, co
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::init(const ObElectionGroupId& eg_id, const ObAddr& self, const uint64_t tenant_id,
|
||||
ObIElectionRpc* rpc, ObTimeWheel* tw, ObIElectionMgr* election_mgr, ObElectionGroupCache* election_group_cache,
|
||||
ObIElectionGroupPriorityGetter* eg_cb, ObIElectionGroupMgr* eg_mgr)
|
||||
int ObElectionGroup::init(const ObElectionGroupId &eg_id, const ObAddr &self, const uint64_t tenant_id,
|
||||
ObIElectionRpc *rpc, ObTimeWheel *tw, ObIElectionMgr *election_mgr, ObElectionGroupCache *election_group_cache,
|
||||
ObIElectionGroupPriorityGetter *eg_cb, ObIElectionGroupMgr *eg_mgr)
|
||||
{
|
||||
// init for follower elction group
|
||||
// init for follower election group
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
if (is_inited_) {
|
||||
@ -331,7 +331,7 @@ int ObElectionGroup::try_stop_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::try_update_eg_version(const int64_t msg_eg_version, const ObPartitionArray& partition_array)
|
||||
int ObElectionGroup::try_update_eg_version(const int64_t msg_eg_version, const ObPartitionArray &partition_array)
|
||||
{
|
||||
// update eg_version
|
||||
int ret = OB_SUCCESS;
|
||||
@ -357,10 +357,10 @@ bool ObElectionGroup::is_need_check_eg_version(const int64_t msg_eg_version) con
|
||||
return (ROLE_LEADER != ATOMIC_LOAD(&role_) && (ATOMIC_LOAD(&eg_version_) != msg_eg_version));
|
||||
}
|
||||
|
||||
int ObElectionGroup::check_eg_version(const int64_t msg_eg_version, const ObPartitionArray& partition_array,
|
||||
ObPartitionArray& pending_move_out_array, ObPartitionArray& pending_move_in_array)
|
||||
int ObElectionGroup::check_eg_version(const int64_t msg_eg_version, const ObPartitionArray &partition_array,
|
||||
ObPartitionArray &pending_move_out_array, ObPartitionArray &pending_move_in_array)
|
||||
{
|
||||
// check version before follower group process messsages
|
||||
// check version before follower group process messages
|
||||
// is_running may be false for follower group
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -420,7 +420,7 @@ int ObElectionGroup::check_eg_version(const int64_t msg_eg_version, const ObPart
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_part_array_equal_(const ObPartitionArray& partition_array) const
|
||||
bool ObElectionGroup::is_part_array_equal_(const ObPartitionArray &partition_array) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
if (partition_array_.count() != partition_array.count()) {
|
||||
@ -439,8 +439,8 @@ bool ObElectionGroup::is_part_array_equal_(const ObPartitionArray& partition_arr
|
||||
return bool_ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::gen_pending_move_part_array_(const int64_t msg_eg_version, const ObPartitionArray& partition_array,
|
||||
ObPartitionArray& pending_move_in_array, ObPartitionArray& pending_move_out_array)
|
||||
int ObElectionGroup::gen_pending_move_part_array_(const int64_t msg_eg_version, const ObPartitionArray &partition_array,
|
||||
ObPartitionArray &pending_move_in_array, ObPartitionArray &pending_move_out_array)
|
||||
{
|
||||
// follower group calculate move in/out list according to leader group's message
|
||||
int ret = OB_SUCCESS;
|
||||
@ -456,7 +456,7 @@ int ObElectionGroup::gen_pending_move_part_array_(const int64_t msg_eg_version,
|
||||
const int64_t self_part_count = partition_array_.count();
|
||||
int64_t tmp_idx = -1;
|
||||
for (int64_t i = 0; i < self_part_count; ++i) {
|
||||
const ObPartitionKey& tmp_arg_pkey = partition_array_.at(i);
|
||||
const ObPartitionKey &tmp_arg_pkey = partition_array_.at(i);
|
||||
if (!is_pkey_in_array_(tmp_arg_pkey, partition_array, tmp_idx)) {
|
||||
if (OB_FAIL(pending_move_out_array.push_back(tmp_arg_pkey))) {
|
||||
FORCE_ELECT_LOG(WARN, "array push_back failed", K(ret), K(tmp_arg_pkey));
|
||||
@ -466,7 +466,7 @@ int ObElectionGroup::gen_pending_move_part_array_(const int64_t msg_eg_version,
|
||||
// calculate move in partitions
|
||||
const int64_t arg_part_count = partition_array.count();
|
||||
for (int64_t i = 0; i < arg_part_count; ++i) {
|
||||
const ObPartitionKey& tmp_arg_pkey = partition_array.at(i);
|
||||
const ObPartitionKey &tmp_arg_pkey = partition_array.at(i);
|
||||
if (!is_partition_exist_unlock_(tmp_arg_pkey, tmp_idx)) {
|
||||
if (OB_FAIL(pending_move_in_array.push_back(tmp_arg_pkey))) {
|
||||
FORCE_ELECT_LOG(WARN, "array push_back failed", K(ret), K(tmp_arg_pkey));
|
||||
@ -477,7 +477,7 @@ int ObElectionGroup::gen_pending_move_part_array_(const int64_t msg_eg_version,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::batch_move_out_partition_(const ObPartitionArray& pending_move_out_array)
|
||||
int ObElectionGroup::batch_move_out_partition_(const ObPartitionArray &pending_move_out_array)
|
||||
{
|
||||
// handle with move out partitions,
|
||||
// no lock protected, call interface of ObElection
|
||||
@ -524,7 +524,7 @@ int ObElectionGroup::push_lease_to_part_stat_()
|
||||
return push_lease_to_part_skip_pkey_(tmp_pkey);
|
||||
}
|
||||
|
||||
int ObElectionGroup::push_lease_to_part_skip_pkey_(const ObPartitionKey& skip_pkey)
|
||||
int ObElectionGroup::push_lease_to_part_skip_pkey_(const ObPartitionKey &skip_pkey)
|
||||
{
|
||||
// push group's lease to every partition's state, except skip_pkey
|
||||
int ret = OB_SUCCESS;
|
||||
@ -550,7 +550,7 @@ int ObElectionGroup::push_lease_to_part_skip_pkey_(const ObPartitionKey& skip_pk
|
||||
}
|
||||
|
||||
int ObElectionGroup::move_in_partition(
|
||||
const ObPartitionKey& pkey, const lease_t part_lease, const int64_t takeover_t1_timestamp, int64_t& ret_idx)
|
||||
const ObPartitionKey &pkey, const lease_t part_lease, const int64_t takeover_t1_timestamp, int64_t &ret_idx)
|
||||
{
|
||||
// move in partition, called by ObElection
|
||||
// do:add partitions;update group's lease_end.
|
||||
@ -618,7 +618,7 @@ int ObElectionGroup::move_in_partition(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::move_out_partition(const ObPartitionKey& pkey, const int64_t target_idx)
|
||||
int ObElectionGroup::move_out_partition(const ObPartitionKey &pkey, const int64_t target_idx)
|
||||
{
|
||||
// move out partition, called by ObElection
|
||||
int ret = OB_SUCCESS;
|
||||
@ -724,7 +724,7 @@ bool ObElectionGroup::is_empty_() const
|
||||
return (partition_array_.count() == 0);
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_pkey_exist_(const ObPartitionKey& pkey) const
|
||||
bool ObElectionGroup::is_pkey_exist_(const ObPartitionKey &pkey) const
|
||||
{
|
||||
// read lock added here
|
||||
int64_t dummy_idx = -1;
|
||||
@ -732,13 +732,13 @@ bool ObElectionGroup::is_pkey_exist_(const ObPartitionKey& pkey) const
|
||||
return is_partition_exist_unlock_(pkey, dummy_idx);
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_partition_exist_unlock_(const ObPartitionKey& pkey, int64_t& idx) const
|
||||
bool ObElectionGroup::is_partition_exist_unlock_(const ObPartitionKey &pkey, int64_t &idx) const
|
||||
{
|
||||
return is_pkey_in_array_(pkey, partition_array_, idx);
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_pkey_in_array_(
|
||||
const ObPartitionKey& pkey, const ObPartitionArray& partition_array, int64_t& idx) const
|
||||
const ObPartitionKey &pkey, const ObPartitionArray &partition_array, int64_t &idx) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
idx = -1;
|
||||
@ -757,7 +757,7 @@ int64_t ObElectionGroup::get_current_ts() const
|
||||
return ObTimeUtility::current_time();
|
||||
}
|
||||
|
||||
int ObElectionGroup::process_vote_prepare_(const ObElectionMsgEGPrepare& msg, const int64_t msg_eg_version)
|
||||
int ObElectionGroup::process_vote_prepare_(const ObElectionMsgEGPrepare &msg, const int64_t msg_eg_version)
|
||||
{
|
||||
// caller need check and add read lock
|
||||
int ret = OB_SUCCESS;
|
||||
@ -825,7 +825,7 @@ int ObElectionGroup::process_vote_prepare_(const ObElectionMsgEGPrepare& msg, co
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::local_handle_vote_prepare_(const ObElectionMsgEGPrepare& msg)
|
||||
int ObElectionGroup::local_handle_vote_prepare_(const ObElectionMsgEGPrepare &msg)
|
||||
{
|
||||
// caller need add read lock
|
||||
int ret = OB_SUCCESS;
|
||||
@ -859,7 +859,7 @@ int ObElectionGroup::local_handle_vote_prepare_(const ObElectionMsgEGPrepare& ms
|
||||
}
|
||||
|
||||
int ObElectionGroup::handle_vote_prepare(
|
||||
const ObElectionMsgEGPrepare& msg, const int64_t msg_eg_version, obrpc::ObElectionRpcResult& result)
|
||||
const ObElectionMsgEGPrepare &msg, const int64_t msg_eg_version, obrpc::ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -944,7 +944,7 @@ int ObElectionGroup::try_centralized_voting_(const int64_t lease_time)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::local_handle_vote_vote_(const ObElectionMsgEGVote& msg)
|
||||
int ObElectionGroup::local_handle_vote_vote_(const ObElectionMsgEGVote &msg)
|
||||
{
|
||||
// caller need add read lock
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1006,9 +1006,9 @@ int ObElectionGroup::local_handle_vote_vote_(const ObElectionMsgEGVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::handle_vote_vote(const ObElectionMsgEGVote& msg, const int64_t msg_eg_version,
|
||||
const bool is_array_deserialized, const char* buf, const int64_t buf_len, const int64_t array_start_pos,
|
||||
ObPartitionArray& msg_part_array, obrpc::ObElectionRpcResult& result)
|
||||
int ObElectionGroup::handle_vote_vote(const ObElectionMsgEGVote &msg, const int64_t msg_eg_version,
|
||||
const bool is_array_deserialized, const char *buf, const int64_t buf_len, const int64_t array_start_pos,
|
||||
ObPartitionArray &msg_part_array, obrpc::ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1107,7 +1107,7 @@ int ObElectionGroup::handle_vote_vote(const ObElectionMsgEGVote& msg, const int6
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::send_vote_vote_(const ObElectionMsgEGVote& msg)
|
||||
int ObElectionGroup::send_vote_vote_(const ObElectionMsgEGVote &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -1125,7 +1125,7 @@ int ObElectionGroup::send_vote_vote_(const ObElectionMsgEGVote& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_majority_part_idx_array_(ObPartIdxArray& majority_part_idx_array)
|
||||
int ObElectionGroup::get_majority_part_idx_array_(ObPartIdxArray &majority_part_idx_array)
|
||||
{
|
||||
// get the list of partitions who received majority votes
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1174,7 +1174,7 @@ int ObElectionGroup::check_centralized_majority_()
|
||||
new_leader,
|
||||
is_all_part_merged_in_,
|
||||
is_eg_majority,
|
||||
part_state_array_, // for counting every singal partition's tick
|
||||
part_state_array_, // for counting every single partition's tick
|
||||
partition_array_,
|
||||
eg_version_,
|
||||
replica_num_,
|
||||
@ -1237,8 +1237,8 @@ int ObElectionGroup::check_centralized_majority_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_pkey_in_majority_array_(const ObPartitionKey& tmp_pkey, const ObPartitionArray& msg_part_array,
|
||||
const ObPartIdxArray& msg_majority_part_idx_array) const
|
||||
bool ObElectionGroup::is_pkey_in_majority_array_(const ObPartitionKey &tmp_pkey, const ObPartitionArray &msg_part_array,
|
||||
const ObPartIdxArray &msg_majority_part_idx_array) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
const int64_t msg_majority_array_cnt = msg_majority_part_idx_array.count();
|
||||
@ -1257,8 +1257,8 @@ bool ObElectionGroup::is_pkey_in_majority_array_(const ObPartitionKey& tmp_pkey,
|
||||
}
|
||||
|
||||
int ObElectionGroup::parse_majority_part_idx_array_(const bool msg_all_part_merged_in,
|
||||
const ObPartIdxArray& msg_majority_part_idx_array, const ObPartitionArray& msg_part_array,
|
||||
ObPartIdxArray& majority_idx_array) const
|
||||
const ObPartIdxArray &msg_majority_part_idx_array, const ObPartitionArray &msg_part_array,
|
||||
ObPartIdxArray &majority_idx_array) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t msg_array_cnt = msg_part_array.count();
|
||||
@ -1271,7 +1271,7 @@ int ObElectionGroup::parse_majority_part_idx_array_(const bool msg_all_part_merg
|
||||
FORCE_ELECT_LOG(ERROR, "two array count not match", K(ret), "election_group", *this);
|
||||
} else if (msg_all_part_merged_in) {
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < msg_array_cnt; ++i) {
|
||||
const ObPartitionKey& tmp_pkey = msg_part_array.at(i);
|
||||
const ObPartitionKey &tmp_pkey = msg_part_array.at(i);
|
||||
if (is_partition_exist_unlock_(tmp_pkey, tmp_idx) && OB_FAIL(majority_idx_array.push_back(tmp_idx))) {
|
||||
FORCE_ELECT_LOG(WARN, "array push_back failed", K(ret));
|
||||
}
|
||||
@ -1281,7 +1281,7 @@ int ObElectionGroup::parse_majority_part_idx_array_(const bool msg_all_part_merg
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < msg_majority_array_cnt; ++i) {
|
||||
int64_t cur_idx = msg_majority_part_idx_array.at(i);
|
||||
if (cur_idx >= 0 && cur_idx < msg_array_cnt) {
|
||||
const ObPartitionKey& tmp_pkey = msg_part_array.at(cur_idx);
|
||||
const ObPartitionKey &tmp_pkey = msg_part_array.at(cur_idx);
|
||||
if (is_partition_exist_unlock_(tmp_pkey, tmp_idx) && OB_FAIL(majority_idx_array.push_back(tmp_idx))) {
|
||||
FORCE_ELECT_LOG(WARN, "array push_back failed", K(ret));
|
||||
}
|
||||
@ -1293,7 +1293,7 @@ int ObElectionGroup::parse_majority_part_idx_array_(const bool msg_all_part_merg
|
||||
}
|
||||
|
||||
// leader process vote_success message locally
|
||||
int ObElectionGroup::local_handle_vote_success_(const ObElectionMsgEGSuccess& msg)
|
||||
int ObElectionGroup::local_handle_vote_success_(const ObElectionMsgEGSuccess &msg)
|
||||
{
|
||||
// caller need add lock
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1344,7 +1344,7 @@ int ObElectionGroup::local_handle_vote_success_(const ObElectionMsgEGSuccess& ms
|
||||
cur_ts - msg_t1);
|
||||
} else {
|
||||
ObElectionInfo::StateHelper state_helper(state_);
|
||||
const ObAddr& msg_new_leader = msg.get_new_leader();
|
||||
const ObAddr &msg_new_leader = msg.get_new_leader();
|
||||
const bool msg_all_part_merged_in = msg.is_all_part_merged_in();
|
||||
// indicate should push election's entire lease or not
|
||||
bool need_update_eg_lease = msg_all_part_merged_in;
|
||||
@ -1386,9 +1386,9 @@ int ObElectionGroup::local_handle_vote_success_(const ObElectionMsgEGSuccess& ms
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::handle_vote_success(const ObElectionMsgEGSuccess& msg, const int64_t msg_eg_version,
|
||||
const bool is_array_deserialized, const char* buf, const int64_t buf_len, const int64_t array_start_pos,
|
||||
ObPartitionArray& msg_part_array, ObPartitionArray& move_in_failed_array, obrpc::ObElectionRpcResult& result)
|
||||
int ObElectionGroup::handle_vote_success(const ObElectionMsgEGSuccess &msg, const int64_t msg_eg_version,
|
||||
const bool is_array_deserialized, const char *buf, const int64_t buf_len, const int64_t array_start_pos,
|
||||
ObPartitionArray &msg_part_array, ObPartitionArray &move_in_failed_array, obrpc::ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1444,7 +1444,7 @@ int ObElectionGroup::handle_vote_success(const ObElectionMsgEGSuccess& msg, cons
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
ObElectionInfo::StateHelper state_helper(state_);
|
||||
const ObAddr& msg_new_leader = msg.get_new_leader();
|
||||
const ObAddr &msg_new_leader = msg.get_new_leader();
|
||||
const bool msg_all_part_merged_in = msg.is_all_part_merged_in();
|
||||
bool need_update_merged_in_val = false;
|
||||
|
||||
@ -1563,8 +1563,8 @@ int ObElectionGroup::handle_vote_success(const ObElectionMsgEGSuccess& msg, cons
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::leader_reappoint_(const bool need_update_eg_lease, const ObPartIdxArray& majority_part_idx_array,
|
||||
const ObAddr& leader, const int64_t t1, const int64_t lease_time)
|
||||
int ObElectionGroup::leader_reappoint_(const bool need_update_eg_lease, const ObPartIdxArray &majority_part_idx_array,
|
||||
const ObAddr &leader, const int64_t t1, const int64_t lease_time)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -1580,7 +1580,7 @@ int ObElectionGroup::leader_reappoint_(const bool need_update_eg_lease, const Ob
|
||||
ObElectionRole::ROLE_LEADER == role_ && // need check lease only if I'm leader
|
||||
cur_ts > leader_lease_.second) { // check if lease has been expired
|
||||
// maybe lease expired event has been exposed to others, leader epoch should pushed
|
||||
// give up renew lease, group will be destoryed
|
||||
// give up renew lease, group will be destroyed
|
||||
ret = OB_ELECTION_WARN_LEADER_LEASE_EXPIRED;
|
||||
FORCE_ELECT_LOG(WARN,
|
||||
"group leader lease expired, give up reappointing",
|
||||
@ -1621,7 +1621,7 @@ int ObElectionGroup::leader_reappoint_(const bool need_update_eg_lease, const Ob
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::leader_elected_(const ObAddr& leader, const int64_t t1, const int64_t lease_time)
|
||||
int ObElectionGroup::leader_elected_(const ObAddr &leader, const int64_t t1, const int64_t lease_time)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1667,7 +1667,7 @@ bool ObElectionGroup::lease_expired_too_long_(const int64_t cur_ts) const
|
||||
}
|
||||
|
||||
int ObElectionGroup::handle_prepare_destroy_msg(
|
||||
const ObElectionMsg& msg, const int64_t msg_eg_version, obrpc::ObElectionRpcResult& result)
|
||||
const ObElectionMsg &msg, const int64_t msg_eg_version, obrpc::ObElectionRpcResult &result)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -1748,7 +1748,7 @@ int ObElectionGroup::prepare_destroy()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_priority_(ObElectionGroupPriority& priority) const
|
||||
int ObElectionGroup::get_priority_(ObElectionGroupPriority &priority) const
|
||||
{
|
||||
// only leader group need call this to get priority for now
|
||||
int ret = OB_SUCCESS;
|
||||
@ -2020,7 +2020,7 @@ bool ObElectionGroup::vote_run_time_out_of_range_(const int64_t cur_ts, const in
|
||||
return (cur_ts - expect_ts) > T_VOTE_TIMER_DIFF;
|
||||
}
|
||||
|
||||
int ObElectionGroup::send_vote_prepare_(const ObElectionMsgEGPrepare& msg)
|
||||
int ObElectionGroup::send_vote_prepare_(const ObElectionMsgEGPrepare &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -2046,7 +2046,7 @@ int ObElectionGroup::send_vote_prepare_(const ObElectionMsgEGPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::send_vote_success_(const ObElectionMsgEGSuccess& msg)
|
||||
int ObElectionGroup::send_vote_success_(const ObElectionMsgEGSuccess &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -2065,7 +2065,7 @@ int ObElectionGroup::send_vote_success_(const ObElectionMsgEGSuccess& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_eg_centralized_candidate_(ObAddr& cur_leader, ObAddr& new_leader)
|
||||
int ObElectionGroup::get_eg_centralized_candidate_(ObAddr &cur_leader, ObAddr &new_leader)
|
||||
{
|
||||
int ret = msg_pool_.get_eg_centralized_candidate(cur_leader, new_leader, T1_timestamp_);
|
||||
if (OB_FAIL(ret)) {
|
||||
@ -2075,7 +2075,7 @@ int ObElectionGroup::get_eg_centralized_candidate_(ObAddr& cur_leader, ObAddr& n
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_unconfirmed_leader_info(ObAddr& unconfirmed_leader, lease_t& unconfirmed_leader_lease) const
|
||||
int ObElectionGroup::get_unconfirmed_leader_info(ObAddr &unconfirmed_leader, lease_t &unconfirmed_leader_lease) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -2086,8 +2086,8 @@ int ObElectionGroup::get_unconfirmed_leader_info(ObAddr& unconfirmed_leader, lea
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_leader_lease_info(const ObPartitionKey& pkey, const int64_t target_idx,
|
||||
const int64_t part_cur_ts, int64_t& eg_lease_end, int64_t& eg_takeover_t1_ts) const
|
||||
int ObElectionGroup::get_leader_lease_info(const ObPartitionKey &pkey, const int64_t target_idx,
|
||||
const int64_t part_cur_ts, int64_t &eg_lease_end, int64_t &eg_takeover_t1_ts) const
|
||||
{
|
||||
// called from election
|
||||
int ret = OB_SUCCESS;
|
||||
@ -2131,7 +2131,7 @@ int ObElectionGroup::get_leader_lease_info(const ObPartitionKey& pkey, const int
|
||||
}
|
||||
|
||||
bool ObElectionGroup::part_leader_lease_is_expired(
|
||||
const int64_t part_cur_ts, const ObPartitionKey& pkey, const int64_t target_idx, int64_t& out_lease_end) const
|
||||
const int64_t part_cur_ts, const ObPartitionKey &pkey, const int64_t target_idx, int64_t &out_lease_end) const
|
||||
{
|
||||
// called from election, checking if lease has been expired
|
||||
RLockGuard guard(lock_);
|
||||
@ -2139,7 +2139,7 @@ bool ObElectionGroup::part_leader_lease_is_expired(
|
||||
}
|
||||
|
||||
bool ObElectionGroup::part_leader_lease_is_expired_unlock_(
|
||||
const int64_t part_cur_ts, const ObPartitionKey& pkey, const int64_t target_idx, int64_t& out_lease_end) const
|
||||
const int64_t part_cur_ts, const ObPartitionKey &pkey, const int64_t target_idx, int64_t &out_lease_end) const
|
||||
{
|
||||
bool bool_ret = true;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -2182,7 +2182,7 @@ bool ObElectionGroup::part_leader_lease_is_expired_unlock_(
|
||||
}
|
||||
|
||||
int ObElectionGroup::check_all_part_leader_lease_(
|
||||
const int64_t cur_ts, bool& is_all_expired, ObPartitionArray& expired_part_array) const
|
||||
const int64_t cur_ts, bool &is_all_expired, ObPartitionArray &expired_part_array) const
|
||||
{
|
||||
// check all partitions' lease in group
|
||||
// will be called when is_all_part_merged_in_=false
|
||||
@ -2202,7 +2202,7 @@ int ObElectionGroup::check_all_part_leader_lease_(
|
||||
// group is not empty, check every partition's lease
|
||||
const int64_t part_array_cnt = partition_array_.count();
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < part_array_cnt; ++i) {
|
||||
const ObPartitionKey& tmp_pkey = partition_array_.at(i);
|
||||
const ObPartitionKey &tmp_pkey = partition_array_.at(i);
|
||||
const int64_t tmp_lease_end = part_state_array_.at(i).lease_end_;
|
||||
if (cur_ts <= tmp_lease_end) {
|
||||
// not expired
|
||||
@ -2216,7 +2216,7 @@ int ObElectionGroup::check_all_part_leader_lease_(
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ObElectionGroup::eg_lease_is_completely_expired_(const int64_t cur_ts, bool& is_all_dropped) const
|
||||
bool ObElectionGroup::eg_lease_is_completely_expired_(const int64_t cur_ts, bool &is_all_dropped) const
|
||||
{
|
||||
bool bool_ret = true;
|
||||
|
||||
@ -2237,7 +2237,7 @@ bool ObElectionGroup::eg_lease_is_completely_expired_(const int64_t cur_ts, bool
|
||||
is_all_dropped = true;
|
||||
const int64_t part_array_cnt = expired_part_array.count();
|
||||
for (int64_t i = 0; is_all_dropped && i < part_array_cnt; ++i) {
|
||||
const ObPartitionKey& tmp_pkey = expired_part_array.at(i);
|
||||
const ObPartitionKey &tmp_pkey = expired_part_array.at(i);
|
||||
bool is_exist = true;
|
||||
if (OB_SUCCESS !=
|
||||
(tmp_ret = storage::ObPartitionService::get_instance().check_partition_exist(tmp_pkey, is_exist))) {
|
||||
@ -2278,12 +2278,12 @@ bool ObElectionGroup::unconfirmed_leader_lease_is_expired_(const int64_t cur_ts)
|
||||
return (cur_ts > unconfirmed_leader_lease_.second);
|
||||
}
|
||||
|
||||
void ObElectionGroup::set_unconfirmed_leader_(const ObAddr& unconfirmed_leader)
|
||||
void ObElectionGroup::set_unconfirmed_leader_(const ObAddr &unconfirmed_leader)
|
||||
{
|
||||
unconfirmed_leader_ = unconfirmed_leader;
|
||||
}
|
||||
|
||||
int ObElectionGroup::post_election_msg_(const ObMemberList& mlist, const ObElectionMsg& msg)
|
||||
int ObElectionGroup::post_election_msg_(const ObMemberList &mlist, const ObElectionMsg &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObAddr server;
|
||||
@ -2325,7 +2325,7 @@ int ObElectionGroup::check_array_buf_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::post_election_msg_(const ObAddr& server, const ObElectionMsg& msg)
|
||||
int ObElectionGroup::post_election_msg_(const ObAddr &server, const ObElectionMsg &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -2343,12 +2343,12 @@ int ObElectionGroup::post_election_msg_(const ObAddr& server, const ObElectionMs
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_candidate_(const ObAddr& server) const
|
||||
bool ObElectionGroup::is_candidate_(const ObAddr &server) const
|
||||
{
|
||||
return sorted_member_list_.contains(server);
|
||||
}
|
||||
|
||||
bool ObElectionGroup::is_real_leader_(const ObAddr& server) const
|
||||
bool ObElectionGroup::is_real_leader_(const ObAddr &server) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
const int64_t cur_ts = get_current_ts();
|
||||
@ -2378,7 +2378,7 @@ bool ObElectionGroup::in_reappoint_period_(const int64_t ts)
|
||||
return bool_ret;
|
||||
}
|
||||
|
||||
int ObElectionGroup::get_election_group_info(ObElectionGroupInfo& eg_info) const
|
||||
int ObElectionGroup::get_election_group_info(ObElectionGroupInfo &eg_info) const
|
||||
{
|
||||
RLockGuard guard(lock_);
|
||||
eg_info.set_is_running(is_running_);
|
||||
|
||||
@ -25,7 +25,7 @@ void ObEGVoteMsgPool::reset()
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
int ObEGVoteMsgPool::do_store_(const T& msg, ObElectionVoteMsgArray<T>& array)
|
||||
int ObEGVoteMsgPool::do_store_(const T &msg, ObElectionVoteMsgArray<T> &array)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
bool is_exist = false;
|
||||
@ -59,9 +59,9 @@ int ObEGVoteMsgPool::do_store_(const T& msg, ObElectionVoteMsgArray<T>& array)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::check_eg_centralized_majority(common::ObAddr& cur_leader, common::ObAddr& new_leader,
|
||||
const bool is_all_part_merged_in, bool& is_eg_majority, ObPartStateArray& part_state_array,
|
||||
const common::ObPartitionArray& partition_array, const int64_t self_version, const int64_t replica_num,
|
||||
int ObEGVoteMsgPool::check_eg_centralized_majority(common::ObAddr &cur_leader, common::ObAddr &new_leader,
|
||||
const bool is_all_part_merged_in, bool &is_eg_majority, ObPartStateArray &part_state_array,
|
||||
const common::ObPartitionArray &partition_array, const int64_t self_version, const int64_t replica_num,
|
||||
const int64_t t1, const uint64_t eg_hash, const int64_t cur_ts)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -106,7 +106,7 @@ int ObEGVoteMsgPool::check_eg_centralized_majority(common::ObAddr& cur_leader, c
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::store(const ObElectionMsg& msg)
|
||||
int ObEGVoteMsgPool::store(const ObElectionMsg &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -116,9 +116,9 @@ int ObEGVoteMsgPool::store(const ObElectionMsg& msg)
|
||||
} else {
|
||||
const int msg_type = msg.get_msg_type();
|
||||
if (msg_type == OB_ELECTION_EG_VOTE_PREPARE) {
|
||||
ret = store_(static_cast<const ObElectionMsgEGPrepare&>(msg));
|
||||
ret = store_(static_cast<const ObElectionMsgEGPrepare &>(msg));
|
||||
} else if (msg_type == OB_ELECTION_EG_VOTE_VOTE) {
|
||||
ret = store_(static_cast<const ObElectionMsgEGVote4Store&>(msg));
|
||||
ret = store_(static_cast<const ObElectionMsgEGVote4Store &>(msg));
|
||||
} else {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
}
|
||||
@ -127,7 +127,7 @@ int ObEGVoteMsgPool::store(const ObElectionMsg& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::store_(const ObElectionMsgEGPrepare& msg)
|
||||
int ObEGVoteMsgPool::store_(const ObElectionMsgEGPrepare &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -142,7 +142,7 @@ int ObEGVoteMsgPool::store_(const ObElectionMsgEGPrepare& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::store_(const ObElectionMsgEGVote4Store& msg)
|
||||
int ObEGVoteMsgPool::store_(const ObElectionMsgEGVote4Store &msg)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -157,7 +157,7 @@ int ObEGVoteMsgPool::store_(const ObElectionMsgEGVote4Store& msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::get_eg_centralized_candidate(ObAddr& cur_leader, ObAddr& new_leader, const int64_t t1)
|
||||
int ObEGVoteMsgPool::get_eg_centralized_candidate(ObAddr &cur_leader, ObAddr &new_leader, const int64_t t1)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int count = 0;
|
||||
@ -199,7 +199,7 @@ int ObEGVoteMsgPool::get_eg_centralized_candidate(ObAddr& cur_leader, ObAddr& ne
|
||||
}
|
||||
|
||||
bool ObEGVoteMsgPool::is_pkey_exist_(
|
||||
const common::ObPartitionKey& pkey, const common::ObPartitionArray& partition_array, int64_t& idx) const
|
||||
const common::ObPartitionKey &pkey, const common::ObPartitionArray &partition_array, int64_t &idx) const
|
||||
{
|
||||
bool bool_ret = false;
|
||||
idx = -1;
|
||||
@ -213,8 +213,8 @@ bool ObEGVoteMsgPool::is_pkey_exist_(
|
||||
return bool_ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::count_ticket_(const common::ObPartitionArray& msg_part_array,
|
||||
const common::ObPartitionArray& partition_array, ObPartStateArray& part_state_array)
|
||||
int ObEGVoteMsgPool::count_ticket_(const common::ObPartitionArray &msg_part_array,
|
||||
const common::ObPartitionArray &partition_array, ObPartStateArray &part_state_array)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -236,7 +236,7 @@ int ObEGVoteMsgPool::count_ticket_(const common::ObPartitionArray& msg_part_arra
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::process_vote_cnt_(const int64_t eg_vote_cnt, const int64_t replica_num,
|
||||
ObPartStateArray& part_state_array, bool& is_eg_majority, const int64_t cur_ts)
|
||||
ObPartStateArray &part_state_array, bool &is_eg_majority, const int64_t cur_ts)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -257,9 +257,9 @@ int ObEGVoteMsgPool::process_vote_cnt_(const int64_t eg_vote_cnt, const int64_t
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObEGVoteMsgPool::get_eg_centralized_majority_(common::ObAddr& cur_leader, common::ObAddr& new_leader,
|
||||
const bool is_all_part_merged_in, bool& is_eg_majority, ObPartStateArray& part_state_array,
|
||||
const common::ObPartitionArray& partition_array, const int64_t self_version, const int64_t replica_num,
|
||||
int ObEGVoteMsgPool::get_eg_centralized_majority_(common::ObAddr &cur_leader, common::ObAddr &new_leader,
|
||||
const bool is_all_part_merged_in, bool &is_eg_majority, ObPartStateArray &part_state_array,
|
||||
const common::ObPartitionArray &partition_array, const int64_t self_version, const int64_t replica_num,
|
||||
const int64_t t1, const uint64_t hash, const int64_t cur_ts)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -276,7 +276,7 @@ int ObEGVoteMsgPool::get_eg_centralized_majority_(common::ObAddr& cur_leader, co
|
||||
ELECT_ASYNC_LOG(WARN, "message t1 timestamp not match", K(i), K(hash), K(t1), K(msg), K(msg_cnt));
|
||||
// yes, continue
|
||||
} else {
|
||||
int64_t ticket = 0; // totle ticket
|
||||
int64_t ticket = 0; // total ticket
|
||||
int64_t eg_vote_cnt = 0; // the ticket in same version
|
||||
bool is_leader_sender = false;
|
||||
tmp_cur_leader = msg.get_cur_leader();
|
||||
@ -313,7 +313,7 @@ int ObEGVoteMsgPool::get_eg_centralized_majority_(common::ObAddr& cur_leader, co
|
||||
if (eg_vote_cnt > replica_num / 2) {
|
||||
if (false == is_all_part_merged_in) { // first merge-in, need check lease of every election
|
||||
process_vote_cnt_(eg_vote_cnt, replica_num, part_state_array, is_eg_majority, cur_ts);
|
||||
} else { // already in merge-in state, no need to check lease of singal election, cause that lease is not
|
||||
} else { // already in merge-in state, no need to check lease of single election, cause that lease is not
|
||||
// maintained anymore
|
||||
is_eg_majority = true;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user