Skip to content
/ etcd Public
forked from etcd-io/etcd

Commit

Permalink
Merge pull request etcd-io#3856 from xiang90/raft_doc_restart
Browse files Browse the repository at this point in the history
raft: add doc to make restart clear
  • Loading branch information
xiang90 committed Nov 11, 2015
2 parents 0aa4ce0 + f7f28b9 commit 2990249
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions raft/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ Usage
The primary object in raft is a Node. You either start a Node from scratch
using raft.StartNode or start a Node from some initial state using raft.RestartNode.
To start a node from scratch:
storage := raft.NewMemoryStorage()
c := &Config{
ID: 0x01,
Expand All @@ -35,6 +38,29 @@ using raft.StartNode or start a Node from some initial state using raft.RestartN
}
n := raft.StartNode(c, []raft.Peer{{ID: 0x02}, {ID: 0x03}})
To restart a node from previous state:
storage := raft.NewMemoryStorage()
// recover the in-memory storage from persistent
// snapshot, state and entries.
storage.ApplySnapshot(snapshot)
storage.SetHardState(state)
storage.Append(entries)
c := &Config{
ID: 0x01,
ElectionTick: 10,
HeartbeatTick: 1,
Storage: storage,
MaxSizePerMsg: 4096,
MaxInflightMsgs: 256,
}
// restart raft without peer information.
// peer information is already included in the storage.
n := raft.RestartNode(c)
Now that you are holding onto a Node you have a few responsibilities:
First, you must read from the Node.Ready() channel and process the updates
Expand Down

0 comments on commit 2990249

Please sign in to comment.