Skip to content

Commit d271751

Browse files
ti-chi-botCabinfeverB
authored andcommitted
cherry pick 6128
Signed-off-by: Cabinfever_B <cabinfeveroier@gmail.com>
1 parent a8fed33 commit d271751

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

server/schedule/region_scatterer.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,11 @@ func allowLeader(fit *placement.RegionFit, peer *metapb.Peer) bool {
383383
case metapb.PeerRole_Learner, metapb.PeerRole_DemotingVoter:
384384
return false
385385
}
386-
387-
rule := fit.GetRuleFit(peer.GetId()).Rule
388-
switch rule.Role {
386+
peerFit := fit.GetRuleFit(peer.GetId())
387+
if peerFit == nil || peerFit.Rule == nil {
388+
return false
389+
}
390+
switch peerFit.Rule.Role {
389391
case placement.Voter, placement.Leader:
390392
return true
391393
}

server/schedule/region_scatterer_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,11 @@ func TestBalanceRegion(t *testing.T) {
709709
re.Equal(uint64(150), scatterer.ordinaryEngine.selectedPeer.Get(i, group))
710710
re.Equal(uint64(50), scatterer.ordinaryEngine.selectedLeader.Get(i, group))
711711
}
712+
// Test for unhealthy region
713+
// ref https://github.com/tikv/pd/issues/6099
714+
region := tc.AddLeaderRegion(1500, 2, 3, 4, 6)
715+
op := scatterer.scatterRegion(region, group)
716+
re.False(isPeerCountChanged(op))
712717
}
713718

714719
func isPeerCountChanged(op *operator.Operator) bool {

0 commit comments

Comments
 (0)