Skip to content

Commit

Permalink
simulator: fix some logic bugs (#5703)
Browse files Browse the repository at this point in the history
ref #5323, ref #5468, ref #5609

Signed-off-by: HunDunDM <hundundm@gmail.com>
  • Loading branch information
HunDunDM authored Nov 15, 2022
1 parent e6eef7c commit 8690b96
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions tools/pd-simulator/simulator/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func changePeerToOperator(region *core.RegionInfo, cp *pdpb.ChangePeer) (operato
peer := cp.GetPeer()
switch cp.GetChangeType() {
case eraftpb.ConfChangeType_AddNode:
if region.GetPeer(peer.GetId()) != nil {
if region.GetStoreLearner(peer.GetStoreId()) != nil {
return &promoteLearner{peer: peer}, fmt.Sprintf("promote learner %+v for region %d", peer, regionID)
}
return &addPeer{
Expand All @@ -149,7 +149,7 @@ func changePeerToOperator(region *core.RegionInfo, cp *pdpb.ChangePeer) (operato
receivingStat: newSnapshotState(region.GetApproximateSize(), receive),
}, fmt.Sprintf("add voter %+v for region %d", peer, regionID)
case eraftpb.ConfChangeType_AddLearnerNode:
if region.GetPeer(peer.GetId()) != nil {
if region.GetStoreVoter(peer.GetStoreId()) != nil {
return &demoteVoter{peer: peer}, fmt.Sprintf("demote voter %+v for region %d", peer, regionID)
}
return &addPeer{
Expand Down Expand Up @@ -211,6 +211,7 @@ func (t *Task) Step(engine *RaftEngine) (isFinished bool) {
newRegion, t.isFinished = t.tick(engine, region)

if newRegion != nil {
t.epoch = newRegion.GetRegionEpoch()
engine.SetRegion(newRegion)
engine.recordRegionChange(newRegion)
}
Expand Down Expand Up @@ -374,7 +375,7 @@ func (cl *changePeerV2Leave) tick(engine *RaftEngine, region *core.RegionInfo) (
case metapb.PeerRole_IncomingVoter:
opts = append(opts, checkAndCreateChangePeerOption(engine, region, peer, metapb.PeerRole_IncomingVoter, metapb.PeerRole_Voter)...)
case metapb.PeerRole_DemotingVoter:
opts = append(opts, checkAndCreateChangePeerOption(engine, region, peer, metapb.PeerRole_IncomingVoter, metapb.PeerRole_Voter)...)
opts = append(opts, checkAndCreateChangePeerOption(engine, region, peer, metapb.PeerRole_DemotingVoter, metapb.PeerRole_Learner)...)
}
}
if len(opts) < 4 {
Expand Down Expand Up @@ -529,7 +530,7 @@ func processSnapshot(n *Node, stat *snapshotStat) bool {

// store should Generate/Receive snapshot by chunk size.
// todo: the process of snapshot is single thread, the later snapshot task must wait the first one.
for n.limiter.AllowN(int(chunkSize)) {
for stat.remainSize > 0 && n.limiter.AllowN(chunkSize) {
stat.remainSize -= chunkSize
}

Expand Down

0 comments on commit 8690b96

Please sign in to comment.