From b01638c6ef8c27424a448cc045c3788aa767b21c Mon Sep 17 00:00:00 2001 From: Wenbo Zhang Date: Wed, 2 Nov 2022 18:08:07 +0800 Subject: [PATCH] fix panic caused by nil pointer ref tikv/pd#5638 Signed-off-by: Wenbo Zhang --- server/cluster/coordinator_test.go | 3 ++- server/schedulers/transfer_witness_leader.go | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/server/cluster/coordinator_test.go b/server/cluster/coordinator_test.go index 84c43b7e60b..159e61566ae 100644 --- a/server/cluster/coordinator_test.go +++ b/server/cluster/coordinator_test.go @@ -859,6 +859,7 @@ func TestRemoveScheduler(t *testing.T) { re.NoError(co.removeScheduler(schedulers.HotRegionName)) re.NoError(co.removeScheduler(schedulers.GrantLeaderName)) re.NoError(co.removeScheduler(schedulers.SplitBucketName)) + re.NoError(co.removeScheduler(schedulers.TransferWitnessLeaderName)) // all removed sches, _, err = storage.LoadAllScheduleConfig() re.NoError(err) @@ -877,7 +878,7 @@ func TestRemoveScheduler(t *testing.T) { co.run() re.Empty(co.schedulers) // the option remains default scheduler - re.Len(co.cluster.opt.GetSchedulers(), 4) + re.Len(co.cluster.opt.GetSchedulers(), 5) co.stop() co.wg.Wait() } diff --git a/server/schedulers/transfer_witness_leader.go b/server/schedulers/transfer_witness_leader.go index 42d63197e4e..d30a2510921 100644 --- a/server/schedulers/transfer_witness_leader.go +++ b/server/schedulers/transfer_witness_leader.go @@ -135,6 +135,9 @@ func (s *transferLeaderScheduler) scheduleTransferWitnessLeader(name, typ string } func NeedTransferWitnessLeader(region *core.RegionInfo) bool { + if region == nil || region.GetLeader() == nil { + return false + } return region.GetLeader().IsWitness }