mirror of
https://github.com/talent-plan/tinykv.git
synced 2025-03-15 04:10:42 +08:00
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:
parent
d13ccb8785
commit
6f95cf0df4
@ -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,
|
||||
},
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user