|
|
|
@@ -35,7 +35,6 @@ type Server struct {
|
|
|
|
|
pathHandlers *rhttp.Trie
|
|
|
|
|
opts server.Options
|
|
|
|
|
registerRPC bool
|
|
|
|
|
registerCORS bool
|
|
|
|
|
sync.RWMutex
|
|
|
|
|
registered bool
|
|
|
|
|
init bool
|
|
|
|
@@ -518,7 +517,7 @@ func (h *Server) Start() error {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if config.Logger.V(logger.InfoLevel) {
|
|
|
|
|
config.Logger.Infof(config.Context, "Listening on %s", ts.Addr().String())
|
|
|
|
|
config.Logger.Info(config.Context, "Listening on "+ts.Addr().String())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
h.Lock()
|
|
|
|
@@ -562,7 +561,7 @@ func (h *Server) Start() error {
|
|
|
|
|
|
|
|
|
|
if err := config.RegisterCheck(h.opts.Context); err != nil {
|
|
|
|
|
if config.Logger.V(logger.ErrorLevel) {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server %s-%s register check error: %s", config.Name, config.ID, err)
|
|
|
|
|
config.Logger.Error(config.Context, fmt.Sprintf("Server %s-%s register check error", config.Name, config.ID) err)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err = h.Register(); err != nil {
|
|
|
|
@@ -594,7 +593,7 @@ func (h *Server) Start() error {
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
if cerr := hs.Serve(ts); cerr != nil && !errors.Is(cerr, net.ErrClosed) {
|
|
|
|
|
h.opts.Logger.Error(h.opts.Context, cerr)
|
|
|
|
|
h.opts.Logger.Error(h.opts.Context, "serve error", cerr)
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
@@ -622,28 +621,28 @@ func (h *Server) Start() error {
|
|
|
|
|
// nolint: nestif
|
|
|
|
|
if rerr != nil && registered {
|
|
|
|
|
if config.Logger.V(logger.ErrorLevel) {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server %s-%s register check error: %s, deregister it", config.Name, config.ID, rerr)
|
|
|
|
|
config.Logger.Error(config.Context,fmt.Sprintf("Server %s-%s register check error, deregister it", config.Name, config.ID), rerr)
|
|
|
|
|
}
|
|
|
|
|
// deregister self in case of error
|
|
|
|
|
if err := h.Deregister(); err != nil {
|
|
|
|
|
if config.Logger.V(logger.ErrorLevel) {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server %s-%s deregister error: %s", config.Name, config.ID, err)
|
|
|
|
|
config.Logger.Error(config.Context, fmt.Sprintf("Server %s-%s deregister error", config.Name, config.ID), err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if rerr != nil && !registered {
|
|
|
|
|
if config.Logger.V(logger.ErrorLevel) {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server %s-%s register check error: %s", config.Name, config.ID, rerr)
|
|
|
|
|
config.Logger.Error(config.Context, fmt.Sprintf("Server %s-%s register check error", config.Name, config.ID), rerr)
|
|
|
|
|
}
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
if err := h.Register(); err != nil {
|
|
|
|
|
if config.Logger.V(logger.ErrorLevel) {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server %s-%s register error: %s", config.Name, config.ID, err)
|
|
|
|
|
config.Logger.Error(config.Context, fmt.Sprintf("Server %s-%s register error: %s", config.Name, config.ID), err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := h.Register(); err != nil {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server register error: %s", err)
|
|
|
|
|
config.Logger.Error(config.Context, "Server register error", err)
|
|
|
|
|
}
|
|
|
|
|
// wait for exit
|
|
|
|
|
case ch = <-h.exit:
|
|
|
|
@@ -653,11 +652,11 @@ func (h *Server) Start() error {
|
|
|
|
|
|
|
|
|
|
// deregister
|
|
|
|
|
if err := h.Deregister(); err != nil {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Server deregister error: %s", err)
|
|
|
|
|
config.Logger.Error(config.Context, "Server deregister error", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := config.Broker.Disconnect(config.Context); err != nil {
|
|
|
|
|
config.Logger.Errorf(config.Context, "Broker disconnect error: %s", err)
|
|
|
|
|
config.Logger.Error(config.Context, "Broker disconnect error", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), h.opts.GracefulTimeout)
|
|
|
|
|