func (s *Server) Run() { log.Infof("Establishing etcd connectivity") var err error for sleep := time.Second; ; sleep = pkg.ExpBackoff(sleep, time.Minute) { _, err = s.hrt.Beat(s.mon.TTL) if err == nil { break } time.Sleep(sleep) } log.Infof("Starting server components") s.stop = make(chan bool) go s.Monitor() go s.api.Available(s.stop) go s.mach.PeriodicRefresh(machineStateRefreshInterval, s.stop) go s.agent.Heartbeat(s.stop) go s.aReconciler.Run(s.agent, s.stop) if s.disableEngine { log.Info("Not starting engine; disable-engine is set") } else { go s.engine.Run(s.engineReconcileInterval, s.stop) } beatchan := make(chan *unit.UnitStateHeartbeat) go s.usGen.Run(beatchan, s.stop) go s.usPub.Run(beatchan, s.stop) }
func (s *Server) Run() { log.Infof("Establishing etcd connectivity") var idx uint64 var err error for sleep := time.Second; ; sleep = pkg.ExpBackoff(sleep, time.Minute) { idx, err = s.hrt.Beat(s.mon.TTL) if err == nil { break } time.Sleep(sleep) } log.Infof("Starting server components") s.stop = make(chan bool) go s.Monitor() go s.api.Available(s.stop) go s.mach.PeriodicRefresh(machineStateRefreshInterval, s.stop) go s.rStream.Stream(idx, s.eBus.Dispatch, s.stop) go s.agent.Heartbeat(s.stop) go s.aReconciler.Run(s.agent, s.stop) go s.engine.Run(s.stop) beatchan := make(chan *unit.UnitStateHeartbeat) go s.usGen.Run(beatchan, s.stop) go s.usPub.Run(beatchan, s.stop) }
func (s *Server) Run() { log.Infof("Establishing etcd connectivity") var err error for sleep := time.Second; ; sleep = pkg.ExpBackoff(sleep, time.Minute) { if s.restartServer { _, err = s.hrt.Beat(s.mon.TTL) if err == nil { log.Infof("hrt.Beat() success") break } } else { _, err = s.hrt.Register(s.mon.TTL) if err == nil { log.Infof("hrt.Register() success") break } } log.Warningf("Server register machine failed: %v, retrying in %d sec.", err, sleep) time.Sleep(sleep) } go s.Supervise() log.Infof("Starting server components") s.stopc = make(chan struct{}) s.wg = sync.WaitGroup{} beatc := make(chan *unit.UnitStateHeartbeat) components := []func(){ func() { s.api.Available(s.stopc) }, func() { s.mach.PeriodicRefresh(machineStateRefreshInterval, s.stopc) }, func() { s.agent.Heartbeat(s.stopc) }, func() { s.aReconciler.Run(s.agent, s.stopc) }, func() { s.usGen.Run(beatc, s.stopc) }, func() { s.usPub.Run(beatc, s.stopc) }, } if s.disableEngine { log.Info("Not starting engine; disable-engine is set") } else { components = append(components, func() { s.engine.Run(s.engineReconcileInterval, s.stopc) }) } for _, f := range components { f := f s.wg.Add(1) go func() { f() s.wg.Done() }() } }