tinykv project3A LeaderTransferAfterSnapshot3A 测试疑问

在实现了snapshot 和 leaderTransferee 之后,运行 TestLeaderTransferAfterSnapshot3A 报错,错误的直接原因是指定为leader transfer 的目标节点2 由于存在pendingSnapshot 而没有成功执行hup() 发起竞选,参考etcd 中这个测试发现测试案例有执行 advance,这样follower 的pengdingSnaphshot 就可以被清空,而TestLeaderTransferAfterSnapshot3A 中没有调用 advance,导致follower 已经应用的snapshot 没有被清空,请问大家有遇到这个问题吗?advance 这个逻辑是可以省略的吗?

etcd/raft/raft_test.go

func TestLeaderTransferAfterSnapshot(t *testing.T) {
nt := newNetwork(nil, nil, nil)
nt.send(pb.Message{From: 1, To: 1, Type: pb.MsgHup})

nt.isolate(3)


// Apply snapshot and resume progress
follower := nt.peers[3].(*raft)
ready := newReady(follower, &SoftState{}, pb.HardState{})
nt.storage[3].ApplySnapshot(ready.Snapshot)
**follower.advance(ready)**
nt.msgHook = nil
nt.send(filtered)

checkLeaderTransferState(t, lead, StateFollower, 3)

}