From 6f95cf0df4b009d30c84ab6d9dcf1510efbd34b4 Mon Sep 17 00:00:00 2001 From: xiongjiwei Date: Mon, 8 Jun 2020 13:49:28 +0800 Subject: [PATCH] bug fix: may cause redundant change peer request (#196) * bug fix: may cause redundant change peer request Co-authored-by: Connor --- kv/test_raftstore/scheduler.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/kv/test_raftstore/scheduler.go b/kv/test_raftstore/scheduler.go index cf9c0f86..2983e181 100644 --- a/kv/test_raftstore/scheduler.go +++ b/kv/test_raftstore/scheduler.go @@ -390,22 +390,22 @@ func (m *MockSchedulerClient) handleHeartbeatConfVersion(region *metapb.Region) func (m *MockSchedulerClient) tryFinished(op *Operator, region *metapb.Region, leader *metapb.Peer) bool { switch op.Type { case OperatorTypeAddPeer: - add := op.Data.(OpAddPeer) + add := op.Data.(*OpAddPeer) if !add.pending { for _, p := range region.GetPeers() { if add.peer.GetId() == p.GetId() { add.pending = true - } else { - // TinyKV rejects AddNode. return false } } + // TinyKV rejects AddNode. + return false } else { _, found := m.pendingPeers[add.peer.GetId()] return !found } case OperatorTypeRemovePeer: - remove := op.Data.(OpRemovePeer) + remove := op.Data.(*OpRemovePeer) for _, p := range region.GetPeers() { if remove.peer.GetId() == p.GetId() { return false @@ -413,7 +413,7 @@ func (m *MockSchedulerClient) tryFinished(op *Operator, region *metapb.Region, l } return true case OperatorTypeTransferLeader: - transfer := op.Data.(OpTransferLeader) + transfer := op.Data.(*OpTransferLeader) return leader.GetId() == transfer.peer.GetId() } panic("unreachable") @@ -422,7 +422,7 @@ func (m *MockSchedulerClient) tryFinished(op *Operator, region *metapb.Region, l func (m *MockSchedulerClient) makeRegionHeartbeatResponse(op *Operator, resp *schedulerpb.RegionHeartbeatResponse) { switch op.Type { case OperatorTypeAddPeer: - add := op.Data.(OpAddPeer) + add := op.Data.(*OpAddPeer) if !add.pending { resp.ChangePeer = &schedulerpb.ChangePeer{ ChangeType: eraftpb.ConfChangeType_AddNode, @@ -430,13 +430,13 @@ func (m *MockSchedulerClient) makeRegionHeartbeatResponse(op *Operator, resp *sc } } case OperatorTypeRemovePeer: - remove := op.Data.(OpRemovePeer) + remove := op.Data.(*OpRemovePeer) resp.ChangePeer = &schedulerpb.ChangePeer{ ChangeType: eraftpb.ConfChangeType_RemoveNode, Peer: remove.peer, } case OperatorTypeTransferLeader: - transfer := op.Data.(OpTransferLeader) + transfer := op.Data.(*OpTransferLeader) resp.TransferLeader = &schedulerpb.TransferLeader{ Peer: transfer.peer, } @@ -491,7 +491,7 @@ func (m *MockSchedulerClient) removeRegionLocked(region *metapb.Region) { func (m *MockSchedulerClient) AddPeer(regionID uint64, peer *metapb.Peer) { m.scheduleOperator(regionID, &Operator{ Type: OperatorTypeAddPeer, - Data: OpAddPeer{ + Data: &OpAddPeer{ peer: peer, pending: false, }, @@ -501,7 +501,7 @@ func (m *MockSchedulerClient) AddPeer(regionID uint64, peer *metapb.Peer) { func (m *MockSchedulerClient) RemovePeer(regionID uint64, peer *metapb.Peer) { m.scheduleOperator(regionID, &Operator{ Type: OperatorTypeRemovePeer, - Data: OpRemovePeer{ + Data: &OpRemovePeer{ peer: peer, }, }) @@ -510,7 +510,7 @@ func (m *MockSchedulerClient) RemovePeer(regionID uint64, peer *metapb.Peer) { func (m *MockSchedulerClient) TransferLeader(regionID uint64, peer *metapb.Peer) { m.scheduleOperator(regionID, &Operator{ Type: OperatorTypeTransferLeader, - Data: OpTransferLeader{ + Data: &OpTransferLeader{ peer: peer, }, })