func (c *ClusterChecker) Check() error { cd, _, err := c.e.GetClusterData() if err != nil { log.Error("cannot get cluster data", zap.Error(err)) c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) if c.stopListening { c.stopPollonProxy() } return nil } log.Debug("cd dump", zap.String("cd", spew.Sdump(cd))) if cd == nil { log.Info("no clusterdata available, closing connections to previous master") c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) return nil } if cd.FormatVersion != cluster.CurrentCDFormatVersion { log.Error("unsupported clusterdata format version", zap.Uint64("version", cd.FormatVersion)) c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) return nil } if err = cd.Cluster.Spec.Validate(); err != nil { log.Error("clusterdata validation failed", zap.Error(err)) c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) return nil } // Start pollon if not active if err = c.startPollonProxy(); err != nil { log.Error("failed to start proxy", zap.Error(err)) return nil } proxy := cd.Proxy if proxy == nil { log.Info("no proxy object available, closing connections to previous master") c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) if err = c.SetProxyInfo(c.e, proxy.UID, proxy.Generation, 2*cluster.DefaultProxyCheckInterval); err != nil { log.Error("failed to update proxyInfo", zap.Error(err)) } return nil } db, ok := cd.DBs[proxy.Spec.MasterDBUID] if !ok { log.Info("no db object available, closing connections to previous master", zap.String("db", proxy.Spec.MasterDBUID)) c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) if err = c.SetProxyInfo(c.e, proxy.UID, proxy.Generation, 2*cluster.DefaultProxyCheckInterval); err != nil { log.Error("failed to update proxyInfo", zap.Error(err)) } return nil } addr, err := net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%s", db.Status.ListenAddress, db.Status.Port)) if err != nil { log.Error("error", zap.Error(err)) c.sendPollonConfData(pollon.ConfData{DestAddr: nil}) return nil } log.Info("master address", zap.Stringer("address", addr)) if err = c.SetProxyInfo(c.e, proxy.UID, proxy.Generation, 2*cluster.DefaultProxyCheckInterval); err != nil { log.Error("failed to update proxyInfo", zap.Error(err)) } c.sendPollonConfData(pollon.ConfData{DestAddr: addr}) return nil }
func sigHandler(sigs chan os.Signal, stop chan bool) { s := <-sigs log.Debug("got signal", zap.Stringer("signal", s)) close(stop) }