From 556518011f11ce35ae131f41d2959cb9b3a37fb8 Mon Sep 17 00:00:00 2001 From: unconsolable Date: Tue, 2 Nov 2021 16:40:18 +0800 Subject: [PATCH] raft: keep leader term consistent with log entries (#299) * raft: keep leader term consistent with log entries Signed-off-by: unconsolable * Set leader's term to be greater than/equal to follower Co-authored-by: NingLin-P Co-authored-by: NingLin-P --- raft/raft_paper_test.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/raft/raft_paper_test.go b/raft/raft_paper_test.go index 9889a9fc..0a282f59 100644 --- a/raft/raft_paper_test.go +++ b/raft/raft_paper_test.go @@ -617,30 +617,31 @@ func TestFollowerCheckMessageType_MsgAppend2AB(t *testing.T) { func TestFollowerAppendEntries2AB(t *testing.T) { tests := []struct { index, term uint64 + lterm uint64 ents []*pb.Entry wents []*pb.Entry wunstable []*pb.Entry }{ { - 2, 2, + 2, 2, 3, []*pb.Entry{{Term: 3, Index: 3}}, []*pb.Entry{{Term: 1, Index: 1}, {Term: 2, Index: 2}, {Term: 3, Index: 3}}, []*pb.Entry{{Term: 3, Index: 3}}, }, { - 1, 1, + 1, 1, 4, []*pb.Entry{{Term: 3, Index: 2}, {Term: 4, Index: 3}}, []*pb.Entry{{Term: 1, Index: 1}, {Term: 3, Index: 2}, {Term: 4, Index: 3}}, []*pb.Entry{{Term: 3, Index: 2}, {Term: 4, Index: 3}}, }, { - 0, 0, + 0, 0, 2, []*pb.Entry{{Term: 1, Index: 1}}, []*pb.Entry{{Term: 1, Index: 1}, {Term: 2, Index: 2}}, []*pb.Entry{}, }, { - 0, 0, + 0, 0, 3, []*pb.Entry{{Term: 3, Index: 1}}, []*pb.Entry{{Term: 3, Index: 1}}, []*pb.Entry{{Term: 3, Index: 1}}, @@ -652,7 +653,7 @@ func TestFollowerAppendEntries2AB(t *testing.T) { r := newTestRaft(1, []uint64{1, 2, 3}, 10, 1, storage) r.becomeFollower(2, 2) - r.Step(pb.Message{From: 2, To: 1, MsgType: pb.MessageType_MsgAppend, Term: 2, LogTerm: tt.term, Index: tt.index, Entries: tt.ents}) + r.Step(pb.Message{From: 2, To: 1, MsgType: pb.MessageType_MsgAppend, Term: tt.lterm, LogTerm: tt.term, Index: tt.index, Entries: tt.ents}) wents := make([]pb.Entry, 0, len(tt.wents)) for _, ent := range tt.wents {