[PALF] optimize network bandwidth of arb server
This commit is contained in:
@ -82,11 +82,13 @@ TEST_F(TestObSimpleLogClusterAccessMode, basic_change_access_mode)
|
||||
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->get_role(unused_role, curr_proposal_id, state));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->change_access_mode(curr_proposal_id, mode_version, palf::AccessMode::FLASHBACK, share::SCN::min_scn()));
|
||||
EXPECT_UNTIL_EQ(false, leader.palf_handle_impl_->mode_mgr_.resend_mode_meta_list_.is_valid());
|
||||
EXPECT_EQ(OB_NOT_MASTER, submit_log(leader, 1, id));
|
||||
// base_ts: 0.5 hour later
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->get_access_mode(mode_version, curr_access_mode));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->get_role(unused_role, curr_proposal_id, state));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->change_access_mode(curr_proposal_id, mode_version, AccessMode::APPEND, ref_scn));
|
||||
EXPECT_UNTIL_EQ(false, leader.palf_handle_impl_->mode_mgr_.resend_mode_meta_list_.is_valid());
|
||||
// check all member's applied access_mode
|
||||
sleep(1);
|
||||
std::vector<PalfHandleImplGuard*> palf_list;
|
||||
@ -113,9 +115,11 @@ TEST_F(TestObSimpleLogClusterAccessMode, basic_change_access_mode)
|
||||
// can not APPEND -> FLASHBACK
|
||||
EXPECT_EQ(OB_STATE_NOT_MATCH, leader.palf_handle_impl_->change_access_mode(curr_proposal_id, mode_version, AccessMode::FLASHBACK, ref_scn));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->change_access_mode(curr_proposal_id, mode_version, AccessMode::RAW_WRITE, ref_scn));
|
||||
EXPECT_UNTIL_EQ(false, leader.palf_handle_impl_->mode_mgr_.resend_mode_meta_list_.is_valid());
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->get_access_mode(mode_version, curr_access_mode));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->get_role(unused_role, curr_proposal_id, state));
|
||||
EXPECT_EQ(OB_SUCCESS, leader.palf_handle_impl_->change_access_mode(curr_proposal_id, mode_version, AccessMode::APPEND, ref_scn));
|
||||
EXPECT_UNTIL_EQ(false, leader.palf_handle_impl_->mode_mgr_.resend_mode_meta_list_.is_valid());
|
||||
lsn_array.clear();
|
||||
scn_arrary.clear();
|
||||
EXPECT_EQ(OB_SUCCESS, submit_log(leader, 50, id, lsn_array, scn_arrary));
|
||||
|
||||
@ -755,6 +755,8 @@ int LogModeMgr::after_flush_mode_meta(const bool is_applied_mode_meta, const Log
|
||||
applied_mode_meta_ = (mode_meta.proposal_id_ > applied_mode_meta_.proposal_id_)?
|
||||
mode_meta: applied_mode_meta_;
|
||||
}
|
||||
PALF_LOG(INFO, "after_flush_mode_meta success", K(ret), K_(palf_id), K_(self),
|
||||
K(is_applied_mode_meta), K(mode_meta), K_(accepted_mode_meta), K_(applied_mode_meta));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -774,11 +776,10 @@ int LogModeMgr::ack_mode_meta(const common::ObAddr &server, const int64_t propos
|
||||
K(proposal_id), K_(new_proposal_id), "state", state2str_(state_));
|
||||
} else if (OB_FAIL(ack_list_.add_server(server))) {
|
||||
PALF_LOG(WARN, "add_server failed", K(ret), K_(palf_id), K_(self), K(server));
|
||||
} else {
|
||||
PALF_LOG(INFO, "ack_mode_meta success", K(ret), K_(palf_id), K_(self), K(server),
|
||||
K(proposal_id), K_(follower_list), K_(majority_cnt), K_(ack_list));
|
||||
}
|
||||
} else { }
|
||||
(void) resend_mode_meta_list_.remove_learner(server);
|
||||
PALF_LOG(INFO, "ack_mode_meta finish", K(ret), K_(palf_id), K_(self), K(server),
|
||||
K(proposal_id), K_(follower_list), K_(majority_cnt), K_(ack_list), K_(resend_mode_meta_list));
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -93,7 +93,8 @@ public:
|
||||
TO_STRING_KV(K_(palf_id), K_(self), K_(applied_mode_meta), K_(accepted_mode_meta),
|
||||
K_(last_submit_mode_meta), "state", state2str_(state_), K_(new_proposal_id), K_(local_max_lsn),
|
||||
K_(local_max_log_pid), K_(max_majority_accepted_pid), K_(max_majority_lsn),
|
||||
K_(max_majority_accepted_mode_meta), K_(follower_list), K_(ack_list), K_(majority_cnt));
|
||||
K_(max_majority_accepted_mode_meta), K_(follower_list), K_(ack_list), K_(majority_cnt),
|
||||
K_(last_submit_req_ts), K_(resend_mode_meta_list));
|
||||
|
||||
private:
|
||||
void reset_status_();
|
||||
|
||||
@ -2390,19 +2390,20 @@ int PalfHandleImpl::receive_mode_meta(const common::ObAddr &server,
|
||||
} else if (true == is_applied_mode_meta && OB_SUCCESS != (lock_ret = lock_.wrlock())) {
|
||||
} else if (false == mode_mgr_.can_receive_mode_meta(proposal_id, mode_meta, has_accepted)) {
|
||||
PALF_LOG(WARN, "can_receive_mode_meta failed", KR(ret), KPC(this), K(proposal_id), K(mode_meta));
|
||||
} else if (true == has_accepted && false == is_applied_mode_meta) {
|
||||
} else if (true == has_accepted) {
|
||||
if (OB_FAIL(log_engine_.submit_change_mode_meta_resp(server, proposal_id))) {
|
||||
PALF_LOG(WARN, "submit_change_mode_meta_resp failed", KR(ret), KPC(this), K(proposal_id), K(mode_meta));
|
||||
}
|
||||
} else if (true == has_accepted && true == is_applied_mode_meta) {
|
||||
if (true == is_applied_mode_meta) {
|
||||
// update LogModeMgr::applied_mode_meta requires wlock
|
||||
(void) mode_mgr_.after_flush_mode_meta(is_applied_mode_meta, mode_meta);
|
||||
}
|
||||
} else if (OB_FAIL(mode_mgr_.receive_mode_meta(server, proposal_id, is_applied_mode_meta, mode_meta))) {
|
||||
PALF_LOG(WARN, "receive_mode_meta failed", KR(ret), KPC(this), K(server), K(proposal_id),
|
||||
K(mode_meta));
|
||||
} else {
|
||||
PALF_LOG(INFO, "receive_mode_meta success", KR(ret), KPC(this), K(server), K(proposal_id), K(mode_meta));
|
||||
}
|
||||
} else { }
|
||||
PALF_LOG(INFO, "receive_mode_meta finish", KR(ret), KPC(this), K(server), K(proposal_id),
|
||||
K(is_applied_mode_meta), K(mode_meta));
|
||||
if (OB_SUCCESS == lock_ret) {
|
||||
if (is_applied_mode_meta) {
|
||||
lock_.wrunlock();
|
||||
|
||||
Reference in New Issue
Block a user