From e17f79ee70172f83a02240c519b04f0c81cfd74a Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Thu, 21 Aug 2014 00:30:29 -0700 Subject: [PATCH] raft: start tick --- raft2/node.go | 15 ++++++++++++++- raft2/raft.go | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/raft2/node.go b/raft2/node.go index de32a6994..300684706 100644 --- a/raft2/node.go +++ b/raft2/node.go @@ -19,6 +19,7 @@ type Node struct { propc chan proposal recvc chan Message statec chan stateResp + tickc chan struct{} } func Start(ctx context.Context, name string, election, heartbeat int) *Node { @@ -27,6 +28,7 @@ func Start(ctx context.Context, name string, election, heartbeat int) *Node { propc: make(chan proposal), recvc: make(chan Message), statec: make(chan stateResp), + tickc: make(chan struct{}), } r := &raft{ name: name, @@ -55,6 +57,8 @@ func (n *Node) run(r *raft) { r.propose(p.id, p.data) case m := <-n.recvc: r.step(m) + case <-n.tickc: + r.tick() case n.statec <- stateResp{r.State, r.ents, r.msgs}: r.resetState() case <-n.ctx.Done(): @@ -63,6 +67,15 @@ func (n *Node) run(r *raft) { } } +func (n *Node) Tick() error { + select { + case n.tickc <- struct{}{}: + return nil + case <-n.ctx.Done(): + return n.ctx.Err() + } +} + // Propose proposes data be appended to the log. func (n *Node) Propose(id int64, data []byte) error { select { @@ -83,7 +96,7 @@ func (n *Node) Step(m Message) error { } } -// ReadMessages returns the current point-in-time state. +// ReadState returns the current point-in-time state. func (n *Node) ReadState() (State, []Entry, []Message, error) { select { case sr := <-n.statec: diff --git a/raft2/raft.go b/raft2/raft.go index 358d391d2..616768c33 100644 --- a/raft2/raft.go +++ b/raft2/raft.go @@ -32,3 +32,4 @@ func (sm *raft) hasLeader() bool { return false } func (sm *raft) step(m Message) {} func (sm *raft) resetState() {} func (sm *raft) propose(id int64, data []byte) {} +func (sm *raft) tick() {}