|
@@ -448,6 +448,7 @@ func (svr *Service) destroy() (err error) {
|
|
|
return
|
|
|
}
|
|
|
log.Infof("service stopping")
|
|
|
+ svr.cancelFunc()
|
|
|
if !svr.opts.DisableRegister {
|
|
|
if err = svr.registry.Deregister(svr.ctx, svr.node); err != nil {
|
|
|
log.Warnf("service %s deregister error: %s", svr.opts.Name, err.Error())
|
|
@@ -455,7 +456,6 @@ func (svr *Service) destroy() (err error) {
|
|
|
log.Infof("service %s deregister successful", svr.opts.Name)
|
|
|
}
|
|
|
}
|
|
|
- svr.cancelFunc()
|
|
|
if svr.listener != nil {
|
|
|
if err = svr.listener.Close(); err != nil {
|
|
|
log.Warnf(err.Error())
|
|
@@ -477,6 +477,12 @@ func (svr *Service) destroy() (err error) {
|
|
|
tick.callback(tick.options.Context)
|
|
|
}
|
|
|
}
|
|
|
+ //stop server
|
|
|
+ if svr.opts.Server != nil {
|
|
|
+ if err = svr.opts.Server.Stop(); err != nil {
|
|
|
+ log.Warnf("server %s stop error: %s", svr.opts.Name, err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
svr.wg.Wait()
|
|
|
log.Infof("service stopped")
|
|
|
return
|
|
@@ -523,16 +529,14 @@ func (svr *Service) Run() (err error) {
|
|
|
case <-ch:
|
|
|
case <-svr.ctx.Done():
|
|
|
}
|
|
|
- //stop server
|
|
|
- if svr.opts.Server != nil {
|
|
|
- err = svr.opts.Server.Stop()
|
|
|
- }
|
|
|
return svr.destroy()
|
|
|
}
|
|
|
|
|
|
//Shutdown close service
|
|
|
func (svr *Service) Shutdown() {
|
|
|
- svr.cancelFunc()
|
|
|
+ if atomic.LoadInt32(&svr.exitFlag) == 0 {
|
|
|
+ svr.cancelFunc()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//Context return the service context
|