fixed init errors

This commit is contained in:
ston1th 2021-03-07 13:48:30 +01:00
commit 7c7b816813
8 changed files with 29 additions and 18 deletions

View file

@ -23,6 +23,11 @@ var (
log logr.Logger log logr.Logger
) )
func fatal(err error, msg string) {
log.Error(err, msg)
os.Exit(1)
}
func main() { func main() {
klog.InitFlags(nil) klog.InitFlags(nil)
flag.StringVar(&configFile, "config", "haproxy-lb.yaml", "haproxy-lb config file") flag.StringVar(&configFile, "config", "haproxy-lb.yaml", "haproxy-lb config file")
@ -31,7 +36,7 @@ func main() {
log.Info("starting haproxy-lb", "version", version) log.Info("starting haproxy-lb", "version", version)
cfg, err := config.ParseFile(configFile) cfg, err := config.ParseFile(configFile)
if err != nil { if err != nil {
klog.Fatalf("init failed: %s", err) fatal(err, "init failed")
} }
var c cluster.Cluster var c cluster.Cluster
@ -42,23 +47,25 @@ func main() {
log.Info("creating cluster", "mode", "etcd") log.Info("creating cluster", "mode", "etcd")
c = etcd.NewCluster(klogr.New().WithName("etcd")) c = etcd.NewCluster(klogr.New().WithName("etcd"))
} }
log.Info("starting api server", "address", cfg.Server.Listen, "tls", cfg.Server.TLS != nil)
srv, err := api.NewServer(cfg, log.WithName("api")) srv, err := api.NewServer(cfg, log.WithName("api"))
if err != nil { if err != nil {
klog.Fatalf("init failed: %s", err) fatal(err, "init failed")
} }
log.Info("starting vip-controller")
callbacks, err := controller.NewLBController(cfg, srv, log.WithName("vip-controller")) callbacks, err := controller.NewLBController(cfg, srv, log.WithName("vip-controller"))
if err != nil { if err != nil {
klog.Fatalf("init failed: %s", err) fatal(err, "init failed")
} }
err = c.SetCallbacks(callbacks) err = c.SetCallbacks(callbacks)
if err != nil { if err != nil {
klog.Fatalf("init failed: %s", err) fatal(err, "init failed")
} }
go func() { go func() {
err = c.Start(cfg) err = c.Start(cfg)
if err != nil { if err != nil {
klog.Fatalf("init failed: %s", err) fatal(err, "init failed")
} }
}() }()
go func() { go func() {

View file

@ -121,7 +121,6 @@ func (s *Server) UpdateDB(db *db.DB) error {
} }
func (s *Server) start() { func (s *Server) start() {
<-s.init
s.srv = &http.Server{ s.srv = &http.Server{
Handler: s.mux, Handler: s.mux,
TLSConfig: s.tlsConfig, TLSConfig: s.tlsConfig,
@ -129,6 +128,7 @@ func (s *Server) start() {
WriteTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second,
} }
go func() { go func() {
<-s.init
err := s.srv.Serve(s.listen) err := s.srv.Serve(s.listen)
if err != nil { if err != nil {
s.log.Error(err, "") s.log.Error(err, "")

View file

@ -25,7 +25,7 @@ type CallbackContext interface {
logr.Logger logr.Logger
KV KV
ID() string ID() string
Fatal(error, string) Fatal(error)
} }
type Callbacks struct { type Callbacks struct {

View file

@ -29,7 +29,8 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
db := db.New(cc) db := db.New(cc)
err := srv.UpdateDB(db) err := srv.UpdateDB(db)
if err != nil { if err != nil {
cc.Fatal(err, "error initialising api server as leader") cc.Error(err, "error initialising api server as leader")
cc.Fatal(err)
return return
} }
t := time.NewTicker(time.Second * 10) t := time.NewTicker(time.Second * 10)
@ -79,7 +80,8 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call
db := db.New(cc) db := db.New(cc)
err := srv.UpdateDB(db) err := srv.UpdateDB(db)
if err != nil { if err != nil {
cc.Fatal(err, "error initialising api server as leader") cc.Error(err, "error initialising api server as follower")
cc.Fatal(err)
return return
} }
t := time.NewTicker(time.Second * 10) t := time.NewTicker(time.Second * 10)

View file

@ -30,6 +30,7 @@ type Cluster struct {
keyID string keyID string
session bool session bool
cancelSession func() cancelSession func()
fatal error
} }
func NewCluster(log logr.Logger) cluster.Cluster { func NewCluster(log logr.Logger) cluster.Cluster {

View file

@ -155,10 +155,10 @@ func (c *Cluster) Start(etcdcfg *config.Config) error {
} }
s.Close() s.Close()
close(c.done) close(c.done)
return nil return c.fatal
} }
} }
return nil return c.fatal
} }
func (c *Cluster) leaderID(r *clientv3.GetResponse, err error) string { func (c *Cluster) leaderID(r *clientv3.GetResponse, err error) string {
@ -197,8 +197,8 @@ func (c *Cluster) Stepdown() {
} }
} }
func (c *Cluster) Fatal(err error, msg string) { func (c *Cluster) Fatal(err error) {
c.Error(err, "a fatal error occurred", "message", msg) c.fatal = err
c.Stop() c.Stop()
} }

View file

@ -20,6 +20,7 @@ type Cluster struct {
callbacks cluster.Callbacks callbacks cluster.Callbacks
id string id string
fatal error
} }
func NewCluster(log logr.Logger) cluster.Cluster { func NewCluster(log logr.Logger) cluster.Cluster {

View file

@ -160,10 +160,10 @@ func (c *Cluster) Start(raftcfg *config.Config) error {
c.callbacks.Cleanup(ctx, c) c.callbacks.Cleanup(ctx, c)
} }
close(c.done) close(c.done)
return nil return c.fatal
} }
} }
return nil return c.fatal
} }
func (c *Cluster) leader(ctx context.Context) { func (c *Cluster) leader(ctx context.Context) {
@ -187,8 +187,8 @@ func (c *Cluster) Stepdown() {
} }
} }
func (c *Cluster) Fatal(err error, msg string) { func (c *Cluster) Fatal(err error) {
c.Error(err, "a fatal error occurred", "message", msg) c.fatal = err
c.Stop() c.Stop()
} }