From 6d7f592c38b27dd09699be72b3f00329e9c79664 Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Tue, 6 Mar 2018 01:57:06 -0800 Subject: [PATCH] etcdserver: make "advanceTicks" method Signed-off-by: Gyuho Lee --- etcdserver/raft.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/etcdserver/raft.go b/etcdserver/raft.go index 1aaac0437..e79ecd6ca 100644 --- a/etcdserver/raft.go +++ b/etcdserver/raft.go @@ -368,13 +368,13 @@ func (r *raftNode) resumeSending() { p.Resume() } -// advanceTicksForElection advances ticks to the node for fast election. -// This reduces the time to wait for first leader election if bootstrapping the whole -// cluster, while leaving at least 1 heartbeat for possible existing leader -// to contact it. -func advanceTicksForElection(n raft.Node, electionTicks int) { - for i := 0; i < electionTicks-1; i++ { - n.Tick() +// advanceTicks advances ticks of Raft node. +// This can be used for fast-forwarding election +// ticks in multi data-center deployments, thus +// speeding up election process. +func (r *raftNode) advanceTicks(ticks int) { + for i := 0; i < ticks; i++ { + r.Tick() } } @@ -415,8 +415,9 @@ func startNode(cfg *ServerConfig, cl *membership.RaftCluster, ids []types.ID) (i raftStatusMu.Lock() raftStatus = n.Status raftStatusMu.Unlock() + advanceTicksForElection(n, c.ElectionTick) - return + return id, n, s, w } func restartNode(cfg *ServerConfig, snapshot *raftpb.Snapshot) (types.ID, *membership.RaftCluster, raft.Node, *raft.MemoryStorage, *wal.WAL) { @@ -449,7 +450,6 @@ func restartNode(cfg *ServerConfig, snapshot *raftpb.Snapshot) (types.ID, *membe raftStatusMu.Lock() raftStatus = n.Status raftStatusMu.Unlock() - advanceTicksForElection(n, c.ElectionTick) return id, cl, n, s, w }