fixed init errors
This commit is contained in:
parent
c9996712de
commit
7c7b816813
8 changed files with 29 additions and 18 deletions
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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, "")
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue