From 4f9d2417a94e3edb808c9bac95e0b9cfd20db19b Mon Sep 17 00:00:00 2001 From: lhy1024 Date: Thu, 26 Oct 2023 17:03:33 +0800 Subject: [PATCH] This is an automated cherry-pick of #7240 close tikv/pd#7249 Signed-off-by: ti-chi-bot --- pkg/schedule/checker/rule_checker.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/schedule/checker/rule_checker.go b/pkg/schedule/checker/rule_checker.go index c4e7c242deaa..7ffc40a79715 100644 --- a/pkg/schedule/checker/rule_checker.go +++ b/pkg/schedule/checker/rule_checker.go @@ -498,9 +498,28 @@ func (c *RuleChecker) fixOrphanPeers(region *core.RegionInfo, fit *placement.Reg hasUnhealthyFit = true break } +<<<<<<< HEAD pinDownPeer, hasUnhealthyFit = checkDownPeer(rf.Peers) if hasUnhealthyFit { break +======= + for _, p := range rf.Peers { + if isUnhealthyPeer(p.GetId()) { + // make sure is down peer. + if region.GetDownPeer(p.GetId()) != nil { + pinDownPeer = p + } + hasUnhealthyFit = true + break loopFits + } + // avoid to meet down store when fix orpahn peers, + // Isdisconnected is more strictly than IsUnhealthy. + if c.cluster.GetStore(p.GetStoreId()).IsDisconnected() { + hasUnhealthyFit = true + pinDownPeer = p + break loopFits + } +>>>>>>> f9b476d80 (checker: add disconnected check when fix orphan peers (#7240)) } } @@ -539,7 +558,12 @@ func (c *RuleChecker) fixOrphanPeers(region *core.RegionInfo, fit *placement.Reg return operator.CreatePromoteLearnerOperatorAndRemovePeer("replace-down-peer-with-orphan-peer", c.cluster, region, orphanPeer, pinDownPeer) case orphanPeerRole == metapb.PeerRole_Voter && destRole == metapb.PeerRole_Learner: return operator.CreateDemoteLearnerOperatorAndRemovePeer("replace-down-peer-with-orphan-peer", c.cluster, region, orphanPeer, pinDownPeer) +<<<<<<< HEAD case orphanPeerRole == destRole && isDisconnectedPeer(pinDownPeer) && !dstStore.IsDisconnected(): +======= + case orphanPeerRole == metapb.PeerRole_Voter && destRole == metapb.PeerRole_Voter && + c.cluster.GetStore(pinDownPeer.GetStoreId()).IsDisconnected() && !dstStore.IsDisconnected(): +>>>>>>> f9b476d80 (checker: add disconnected check when fix orphan peers (#7240)) return operator.CreateRemovePeerOperator("remove-replaced-orphan-peer", c.cluster, 0, region, pinDownPeer.GetStoreId()) default: // destRole should not same with orphanPeerRole. if role is same, it fit with orphanPeer should be better than now.