diff --git a/raft/node.go b/raft/node.go index 7c5f329e4..f9053da09 100644 --- a/raft/node.go +++ b/raft/node.go @@ -575,7 +575,7 @@ func newReady(r *raft, prevSoftSt *SoftState, prevHardSt pb.HardState) Ready { if len(r.readStates) != 0 { rd.ReadStates = r.readStates } - rd.MustSync = MustSync(rd.HardState, prevHardSt, len(rd.Entries)) + rd.MustSync = MustSync(r.hardState(), prevHardSt, len(rd.Entries)) return rd } diff --git a/raft/rawnode_test.go b/raft/rawnode_test.go index 8b8ccf5d3..4c794a763 100644 --- a/raft/rawnode_test.go +++ b/raft/rawnode_test.go @@ -57,6 +57,10 @@ func TestRawNodeProposeAndConfChange(t *testing.T) { s.Append(rd.Entries) rawNode.Advance(rd) + if d := rawNode.Ready(); d.MustSync || !IsEmptyHardState(d.HardState) || len(d.Entries) > 0 { + t.Fatalf("expected empty hard state with must-sync=false: %#v", d) + } + rawNode.Campaign() proposed := false var ( @@ -329,7 +333,7 @@ func TestRawNodeRestart(t *testing.T) { HardState: emptyState, // commit up to commit index in st CommittedEntries: entries[:st.Commit], - MustSync: true, + MustSync: false, } storage := NewMemoryStorage() @@ -366,7 +370,7 @@ func TestRawNodeRestartFromSnapshot(t *testing.T) { HardState: emptyState, // commit up to commit index in st CommittedEntries: entries, - MustSync: true, + MustSync: false, } s := NewMemoryStorage()