Skip to content

Commit

Permalink
feat: unregister before stop (#462)
Browse files Browse the repository at this point in the history
Co-authored-by: papa-hexuan <hexuan@douyu.tv>
  • Loading branch information
papa-hexuan and papa-hexuan committed Oct 10, 2022
1 parent ed0da65 commit 97c7009
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions pkg/application/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,13 @@ func (app *Application) Stop() (err error) {
for _, s := range app.servers {
func(s server.Server) {
app.smu.RLock()
// unregister before stop
e := registry.DefaultRegisterer.UnregisterService(context.Background(), s.Info())
if e != nil {
app.logger.Error("exit server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("stop"), xlog.FieldName(s.Info().Name), xlog.FieldAddr(s.Info().Label()), xlog.FieldErr(err))
}
app.logger.Info("exit server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("stop"), xlog.FieldName(s.Info().Name), xlog.FieldAddr(s.Info().Label()))

app.cycle.Run(s.Stop)
app.smu.RUnlock()
}(s)
Expand Down Expand Up @@ -296,6 +303,13 @@ func (app *Application) GracefulStop(ctx context.Context) (err error) {
app.cycle.Run(func() error {
app.smu.RLock()
defer app.smu.RUnlock()
// unregister before graceful stop
e := registry.DefaultRegisterer.UnregisterService(ctx, s.Info())
if e != nil {
app.logger.Error("exit server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("graceful stop"), xlog.FieldName(s.Info().Name), xlog.FieldAddr(s.Info().Label()), xlog.FieldErr(err))
}
app.logger.Info("exit server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("graceful stop"), xlog.FieldName(s.Info().Name), xlog.FieldAddr(s.Info().Label()))

return s.GracefulStop(ctx)
})
}(s)
Expand All @@ -320,9 +334,10 @@ func (app *Application) GracefulStop(ctx context.Context) (err error) {
func (app *Application) waitSignals() {
app.logger.Info("init listen signal", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("init"))
signals.Shutdown(func(grace bool) { //when get shutdown signal
//todo: support timeout
if grace {
_ = app.GracefulStop(context.TODO())
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
_ = app.GracefulStop(ctx)
} else {
_ = app.Stop()
}
Expand Down Expand Up @@ -354,13 +369,6 @@ func (app *Application) startServers() error {
for _, s := range app.servers {
s := s
eg.Go(func() (err error) {
defer func() {
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
_ = registry.DefaultRegisterer.UnregisterService(ctx, s.Info())
app.logger.Info("exit server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("exit"), xlog.FieldName(s.Info().Name), xlog.FieldErr(err), xlog.FieldAddr(s.Info().Label()))
}()

time.AfterFunc(time.Second, func() {
_ = registry.DefaultRegisterer.RegisterService(ctx, s.Info())
app.logger.Info("start server", xlog.FieldMod(ecode.ModApp), xlog.FieldEvent("init"), xlog.FieldName(s.Info().Name), xlog.FieldAddr(s.Info().Label()), xlog.Any("scheme", s.Info().Scheme))
Expand Down

0 comments on commit 97c7009

Please sign in to comment.