From 28126a0a5a84a27e03e27eb6a4597a6b44ccbffe Mon Sep 17 00:00:00 2001 From: BinChenn Date: Tue, 7 Feb 2023 20:36:20 +0800 Subject: [PATCH] [fix] arbitration_service prints WDIAG logs when there is no arb member --- src/logservice/palf/log_meta_info.cpp | 5 +++-- src/logservice/palf/palf_handle_impl.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/logservice/palf/log_meta_info.cpp b/src/logservice/palf/log_meta_info.cpp index fa1aced8a8..dfa6c0db83 100644 --- a/src/logservice/palf/log_meta_info.cpp +++ b/src/logservice/palf/log_meta_info.cpp @@ -426,8 +426,9 @@ int LogConfigInfo::get_expected_paxos_memberlist(common::ObMemberList &paxos_mem if (false == log_sync_memberlist_.is_valid() || 0 >= log_sync_replica_num_ || common::OB_MAX_MEMBER_NUMBER < log_sync_replica_num_) { - ret = OB_NOT_INIT; - PALF_LOG(WARN, "LogConfigInfo not init", KR(ret), K_(log_sync_memberlist), K_(log_sync_replica_num)); + // memberlist may be empty when bootstraping cluster, just return empty memberlist + paxos_memberlist.reset(); + paxos_replica_num = 0; } else if (OB_UNLIKELY(degraded_learnerlist_.is_valid())) { paxos_memberlist = log_sync_memberlist_; paxos_replica_num = log_sync_replica_num_; diff --git a/src/logservice/palf/palf_handle_impl.cpp b/src/logservice/palf/palf_handle_impl.cpp index 2d3247fb1d..aef55779af 100644 --- a/src/logservice/palf/palf_handle_impl.cpp +++ b/src/logservice/palf/palf_handle_impl.cpp @@ -3715,6 +3715,7 @@ int PalfHandleImpl::inner_flashback(const share::SCN &flashback_scn) return ret; } +// TODO by yunlong: this function needs refactoring in 4.2.0.0 int PalfHandleImpl::get_ack_info_array(LogMemberAckInfoList &ack_info_array, common::GlobalLearnerList °raded_list) const { @@ -3722,11 +3723,16 @@ int PalfHandleImpl::get_ack_info_array(LogMemberAckInfoList &ack_info_array, RLockGuard guard(lock_); const bool is_leader = (state_mgr_.is_leader_active() || (state_mgr_.is_leader_reconfirm() && reconfirm_.can_do_degrade())); + common::ObMember arb_member; + config_mgr_.get_arbitration_member(arb_member); + const bool need_degrade_or_upgrade = arb_member.is_valid(); if (IS_NOT_INIT) { ret = OB_NOT_INIT; PALF_LOG(WARN, "PalfHandleImpl not inited!!!", K(ret)); } else if (false == is_leader) { ret = OB_NOT_MASTER; + } else if (false == need_degrade_or_upgrade) { + // do not need degrade or upgrade, skip } else if (OB_FAIL(sw_.get_ack_info_array(ack_info_array))) { PALF_LOG(WARN, "get_ack_info_array failed", K(ret), KPC(this)); } else if (OB_FAIL(config_mgr_.get_degraded_learner_list(degraded_list))) {