Skip to content

Commit

Permalink
fix: error handler
Browse files Browse the repository at this point in the history
  • Loading branch information
bzp2010 committed Jun 28, 2021
1 parent 74ebcf9 commit 29c7210
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 23 deletions.
19 changes: 11 additions & 8 deletions api/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,18 +83,21 @@ func manageAPI() error {
return err
}

err = s.Start()
if err != nil {
return err
}
// start Manager API server
errSig := make(chan error, 5)
s.Start(errSig)

// Signal received to the process externally.
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
sig := <-quit

log.Infof("The Manager API server receive %s and start shutting down", sig.String())
s.Stop()
log.Infof("The Manager API server exited")
select {
case sig := <-quit:
log.Infof("The Manager API server receive %s and start shutting down", sig.String())
s.Stop()
log.Infof("The Manager API server exited")
case err := <-errSig:
log.Errorf("The Manager API server start failed: %s", err.Error())
}
return nil
}
22 changes: 7 additions & 15 deletions api/internal/core/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,29 +44,29 @@ func NewServer(options *Options) (*server, error) {
return &server{options: options}, nil
}

func (s *server) Start() error {
func (s *server) Start(errSig chan error) {
// initialize server
err := s.init()
if err != nil {
return err
errSig <- err
return
}

// write daemon pid file
err = s.writePID()
if err != nil {
return err
errSig <- err
return
}

// print server info to stdout
s.printInfo()

// For internal error handling across multiple goroutines.
errSig := make(chan error, 1)

// start HTTP server
log.Infof("The Manager API is listening on %s", s.server.Addr)
go func() {
if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
err := s.server.ListenAndServe()
if err != nil && err != http.ErrServerClosed {
log.Errorf("listen and serv fail: %s", err)
errSig <- err
}
Expand All @@ -82,14 +82,6 @@ func (s *server) Start() error {
}
}()
}

// handle HTTP(s) server error
select {
case err := <-errSig:
return err
default:
return nil
}
}

func (s *server) Stop() {
Expand Down

0 comments on commit 29c7210

Please sign in to comment.