From 085447ed8569de6d45e2cc33911f1016fa710611 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 27 May 2015 13:30:08 -0700 Subject: [PATCH] raft: fix raft node start bug raft node should set initial prev hard state to empty. Or it will not send the first hard coded state to application until the state changes again. This commit fixs the issue. It introduce a small overhead, that the same tate might send to application twice when restarting. But this is fine. --- raft/node.go | 2 +- raft/node_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/raft/node.go b/raft/node.go index 6dc717b51..12c7ea976 100644 --- a/raft/node.go +++ b/raft/node.go @@ -243,7 +243,7 @@ func (n *node) run(r *raft) { lead := None prevSoftSt := r.softState() - prevHardSt := r.HardState + prevHardSt := emptyState for { if advancec != nil { diff --git a/raft/node_test.go b/raft/node_test.go index dea95c692..b407136b5 100644 --- a/raft/node_test.go +++ b/raft/node_test.go @@ -362,7 +362,7 @@ func TestNodeRestart(t *testing.T) { st := raftpb.HardState{Term: 1, Commit: 1} want := Ready{ - HardState: emptyState, + HardState: st, // commit up to index commit index in st CommittedEntries: entries[:st.Commit], } @@ -405,7 +405,7 @@ func TestNodeRestartFromSnapshot(t *testing.T) { st := raftpb.HardState{Term: 1, Commit: 3} want := Ready{ - HardState: emptyState, + HardState: st, // commit up to index commit index in st CommittedEntries: entries, }