bug fix: may cause redundant change peer request (#196)

* bug fix: may cause redundant change peer request

Co-authored-by: Connor <zbk602423539@gmail.com>
This commit is contained in:
xiongjiwei 2020-06-08 13:49:28 +08:00 committed by GitHub
parent d13ccb8785
commit 6f95cf0df4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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,
},
})