From 73178344175db3e8b1c3485528ccf4e9f629823d Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Mon, 8 Dec 2014 16:32:36 -0800 Subject: [PATCH] raft: increase term to 1 before append initial entries Because the term of new raft is 0, it is weird to have term-1 committed entries in the log. --- raft/node.go | 3 +++ raft/node_test.go | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/raft/node.go b/raft/node.go index b0d0ab6a5..33994922e 100644 --- a/raft/node.go +++ b/raft/node.go @@ -137,6 +137,9 @@ func StartNode(id uint64, peers []Peer, election, heartbeat int, storage Storage n := newNode() r := newRaft(id, nil, election, heartbeat, storage) + // become the follower at term 1 and apply initial configuration + // entires of term 1 + r.becomeFollower(1, None) for _, peer := range peers { cc := pb.ConfChange{Type: pb.ConfChangeAddNode, NodeID: peer.ID, Context: peer.Context} d, err := cc.Marshal() diff --git a/raft/node_test.go b/raft/node_test.go index 1617dc110..d37649359 100644 --- a/raft/node_test.go +++ b/raft/node_test.go @@ -306,20 +306,20 @@ func TestNodeStart(t *testing.T) { wants := []Ready{ { SoftState: &SoftState{Lead: 1, Nodes: []uint64{1}, RaftState: StateLeader}, - HardState: raftpb.HardState{Term: 1, Commit: 2}, + HardState: raftpb.HardState{Term: 2, Commit: 2}, Entries: []raftpb.Entry{ {Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata}, - {Term: 1, Index: 2}, + {Term: 2, Index: 2}, }, CommittedEntries: []raftpb.Entry{ {Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata}, - {Term: 1, Index: 2}, + {Term: 2, Index: 2}, }, }, { - HardState: raftpb.HardState{Term: 1, Commit: 3}, - Entries: []raftpb.Entry{{Term: 1, Index: 3, Data: []byte("foo")}}, - CommittedEntries: []raftpb.Entry{{Term: 1, Index: 3, Data: []byte("foo")}}, + HardState: raftpb.HardState{Term: 2, Commit: 3}, + Entries: []raftpb.Entry{{Term: 2, Index: 3, Data: []byte("foo")}}, + CommittedEntries: []raftpb.Entry{{Term: 2, Index: 3, Data: []byte("foo")}}, }, } storage := NewMemoryStorage()