[PALF] optimize network bandwidth of arb server

This commit is contained in:
BinChenn
2023-05-30 02:41:17 +00:00
committed by ob-robot
parent 17e6030a10
commit 68d79be487
4 changed files with 19 additions and 12 deletions

View File

@ -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));

View File

@ -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;
}

View File

@ -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_();

View File

@ -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();