Browse Source

Merge pull request #1888 from yichengq/258

raft: increase term to 1 before append initial entries
Yicheng Qin 11 years ago
parent
commit
22dd3b039c
2 changed files with 9 additions and 6 deletions
  1. 3 0
      raft/node.go
  2. 6 6
      raft/node_test.go

+ 3 - 0
raft/node.go

@@ -137,6 +137,9 @@ func StartNode(id uint64, peers []Peer, election, heartbeat int, storage Storage
 	n := newNode()
 	n := newNode()
 	r := newRaft(id, nil, election, heartbeat, storage)
 	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 {
 	for _, peer := range peers {
 		cc := pb.ConfChange{Type: pb.ConfChangeAddNode, NodeID: peer.ID, Context: peer.Context}
 		cc := pb.ConfChange{Type: pb.ConfChangeAddNode, NodeID: peer.ID, Context: peer.Context}
 		d, err := cc.Marshal()
 		d, err := cc.Marshal()

+ 6 - 6
raft/node_test.go

@@ -306,20 +306,20 @@ func TestNodeStart(t *testing.T) {
 	wants := []Ready{
 	wants := []Ready{
 		{
 		{
 			SoftState: &SoftState{Lead: 1, Nodes: []uint64{1}, RaftState: StateLeader},
 			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{
 			Entries: []raftpb.Entry{
 				{Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata},
 				{Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata},
-				{Term: 1, Index: 2},
+				{Term: 2, Index: 2},
 			},
 			},
 			CommittedEntries: []raftpb.Entry{
 			CommittedEntries: []raftpb.Entry{
 				{Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata},
 				{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()
 	storage := NewMemoryStorage()