浏览代码

Merge pull request #6441 from petermattis/pmattis/tick-quiesced

raft: add RawNode.TickQuiesced
Xiang Li 9 年之前
父节点
当前提交
d6904ce415
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      raft/rawnode.go

+ 12 - 0
raft/rawnode.go

@@ -123,6 +123,18 @@ func (rn *RawNode) Tick() {
 	rn.raft.tick()
 	rn.raft.tick()
 }
 }
 
 
+// TickQuiesced advances the internal logical clock by a single tick without
+// performing any other state machine processing. It allows the caller to avoid
+// periodic heartbeats and elections when all of the peers in a Raft group are
+// known to be at the same state. Expected usage is to periodically invoke Tick
+// or TickQuiesced depending on whether the group is "active" or "quiesced".
+//
+// WARNING: Be very careful about using this method as it subverts the Raft
+// state machine. You should probably be using Tick instead.
+func (rn *RawNode) TickQuiesced() {
+	rn.raft.electionElapsed++
+}
+
 // Campaign causes this RawNode to transition to candidate state.
 // Campaign causes this RawNode to transition to candidate state.
 func (rn *RawNode) Campaign() error {
 func (rn *RawNode) Campaign() error {
 	return rn.raft.Step(pb.Message{
 	return rn.raft.Step(pb.Message{