mirror of https://github.com/status-im/consul.git
Merge pull request #3830 from hashicorp/autopilot-health-loop
Move autopilot health loop into leader operations
This commit is contained in:
commit
31f2829e15
|
@ -64,9 +64,10 @@ func NewAutopilot(logger *log.Logger, delegate Delegate, interval, healthInterva
|
||||||
func (a *Autopilot) Start() {
|
func (a *Autopilot) Start() {
|
||||||
a.shutdownCh = make(chan struct{})
|
a.shutdownCh = make(chan struct{})
|
||||||
a.waitGroup = sync.WaitGroup{}
|
a.waitGroup = sync.WaitGroup{}
|
||||||
a.waitGroup.Add(1)
|
|
||||||
|
|
||||||
|
a.waitGroup.Add(2)
|
||||||
go a.run()
|
go a.run()
|
||||||
|
go a.serverHealthLoop()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Autopilot) Stop() {
|
func (a *Autopilot) Stop() {
|
||||||
|
@ -299,15 +300,17 @@ func (a *Autopilot) handlePromotions(promotions []raft.Server) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerHealthLoop monitors the health of the servers in the cluster
|
// serverHealthLoop monitors the health of the servers in the cluster
|
||||||
func (a *Autopilot) ServerHealthLoop(shutdownCh <-chan struct{}) {
|
func (a *Autopilot) serverHealthLoop() {
|
||||||
|
defer a.waitGroup.Done()
|
||||||
|
|
||||||
// Monitor server health until shutdown
|
// Monitor server health until shutdown
|
||||||
ticker := time.NewTicker(a.healthInterval)
|
ticker := time.NewTicker(a.healthInterval)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-shutdownCh:
|
case <-a.shutdownCh:
|
||||||
return
|
return
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
if err := a.updateClusterHealth(); err != nil {
|
if err := a.updateClusterHealth(); err != nil {
|
||||||
|
|
|
@ -418,9 +418,6 @@ func NewServerLogger(config *Config, logger *log.Logger, tokens *token.Store) (*
|
||||||
// Initialize Autopilot
|
// Initialize Autopilot
|
||||||
s.initAutopilot(config)
|
s.initAutopilot(config)
|
||||||
|
|
||||||
// Start the server health checking.
|
|
||||||
go s.autopilot.ServerHealthLoop(s.shutdownCh)
|
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue