[fix] fix the committed_end_lsn can not be advanced after removing member

This commit is contained in:
BinChenn
2023-09-15 02:40:16 +00:00
committed by ob-robot
parent 14f411060e
commit eeacd9c6bc
5 changed files with 103 additions and 33 deletions

View File

@ -113,8 +113,10 @@ public:
return ret;
}
int get_log_sync_member_list_for_generate_committed_lsn(
ObMemberList &member_list,
int64_t &replica_num,
ObMemberList &prev_member_list,
int64_t &prev_replica_num,
ObMemberList &curr_member_list,
int64_t &curr_replica_num,
bool &is_before_barrier,
LSN &barrier_lsn) const
{
@ -126,20 +128,19 @@ public:
if (IS_NOT_INIT) {
ret = OB_NOT_INIT;
PALF_LOG(WARN, "LogConfigMgr not init", KR(ret));
} else if (OB_FAIL(curr_member_list.deep_copy(log_ms_meta_.curr_.config_.log_sync_memberlist_))) {
PALF_LOG(WARN, "deep_copy member_list failed", KR(ret), K_(palf_id), K_(self));
} else if (FALSE_IT(curr_replica_num = log_ms_meta_.curr_.config_.log_sync_replica_num_)) {
} else if (OB_UNLIKELY(prev_committed_end_lsn < reconfig_barrier_.prev_end_lsn_ &&
reconfig_barrier_.prev_end_lsn_.is_valid())) {
is_before_barrier = true;
barrier_lsn = reconfig_barrier_.prev_end_lsn_;
if (OB_FAIL(member_list.deep_copy(log_ms_meta_.prev_.config_.log_sync_memberlist_))) {
if (OB_FAIL(prev_member_list.deep_copy(log_ms_meta_.prev_.config_.log_sync_memberlist_))) {
PALF_LOG(WARN, "deep_copy member_list failed", KR(ret), K_(palf_id), K_(self));
} else {
replica_num = log_ms_meta_.prev_.config_.log_sync_replica_num_;
prev_replica_num = log_ms_meta_.prev_.config_.log_sync_replica_num_;
}
} else if (OB_FAIL(member_list.deep_copy(log_ms_meta_.curr_.config_.log_sync_memberlist_))) {
PALF_LOG(WARN, "deep_copy member_list failed", KR(ret), K_(palf_id), K_(self));
} else {
replica_num = log_ms_meta_.curr_.config_.log_sync_replica_num_;
}
} else { }
return ret;
}
int get_alive_member_list_with_arb(common::ObMemberList &member_list, int64_t &replica_num) const