mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: add "InitialElectionTickAdvance"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
7cbc2f1068
commit
b923c74fe5
@ -47,8 +47,38 @@ type ServerConfig struct {
|
|||||||
ForceNewCluster bool
|
ForceNewCluster bool
|
||||||
PeerTLSInfo transport.TLSInfo
|
PeerTLSInfo transport.TLSInfo
|
||||||
|
|
||||||
TickMs uint
|
TickMs uint
|
||||||
ElectionTicks int
|
ElectionTicks int
|
||||||
|
|
||||||
|
// InitialElectionTickAdvance is true, then local member fast-forwards
|
||||||
|
// election ticks to speed up "initial" leader election trigger. This
|
||||||
|
// benefits the case of larger election ticks. For instance, cross
|
||||||
|
// datacenter deployment may require longer election timeout of 10-second.
|
||||||
|
// If true, local node does not need wait up to 10-second. Instead,
|
||||||
|
// forwards its election ticks to 8-second, and have only 2-second left
|
||||||
|
// before leader election.
|
||||||
|
//
|
||||||
|
// Major assumptions are that:
|
||||||
|
// - cluster has no active leader thus advancing ticks enables faster
|
||||||
|
// leader election, or
|
||||||
|
// - cluster already has an established leader, and rejoining follower
|
||||||
|
// is likely to receive heartbeats from the leader after tick advance
|
||||||
|
// and before election timeout.
|
||||||
|
//
|
||||||
|
// However, when network from leader to rejoining follower is congested,
|
||||||
|
// and the follower does not receive leader heartbeat within left election
|
||||||
|
// ticks, disruptive election has to happen thus affecting cluster
|
||||||
|
// availabilities.
|
||||||
|
//
|
||||||
|
// Disabling this would slow down initial bootstrap process for cross
|
||||||
|
// datacenter deployments. Make your own tradeoffs by configuring
|
||||||
|
// --initial-election-tick-advance at the cost of slow initial bootstrap.
|
||||||
|
//
|
||||||
|
// If single-node, it advances ticks regardless.
|
||||||
|
//
|
||||||
|
// See https://github.com/coreos/etcd/issues/9333 for more detail.
|
||||||
|
InitialElectionTickAdvance bool
|
||||||
|
|
||||||
BootstrapTimeout time.Duration
|
BootstrapTimeout time.Duration
|
||||||
|
|
||||||
AutoCompactionRetention time.Duration
|
AutoCompactionRetention time.Duration
|
||||||
|
@ -532,6 +532,10 @@ func (s *EtcdServer) adjustTicks() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !s.Cfg.InitialElectionTickAdvance {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// retry up to "rafthttp.ConnReadTimeout", which is 5-sec
|
// retry up to "rafthttp.ConnReadTimeout", which is 5-sec
|
||||||
// until peer connection reports; otherwise:
|
// until peer connection reports; otherwise:
|
||||||
// 1. all connections failed, or
|
// 1. all connections failed, or
|
||||||
|
Loading…
x
Reference in New Issue
Block a user