diff --git a/config/graceful_shutdown_signal_darwin.go b/config/graceful_shutdown_signal_darwin.go index 8ad79ffa62ceed4096c60bfb9139b7ff1586808e..3129ab32b1a9c925a46efa1dfe7ef8103ba0069c 100644 --- a/config/graceful_shutdown_signal_darwin.go +++ b/config/graceful_shutdown_signal_darwin.go @@ -26,7 +26,7 @@ var ( // ShutdownSignals ... ShutdownSignals = []os.Signal{os.Interrupt, os.Kill, syscall.SIGKILL, syscall.SIGSTOP, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, - syscall.SIGABRT, syscall.SIGSYS} + syscall.SIGABRT, syscall.SIGSYS, syscall.SIGTERM} // DumpHeapShutdownSignals ... DumpHeapShutdownSignals = []os.Signal{syscall.SIGQUIT, syscall.SIGILL, diff --git a/registry/nacos/registry.go b/registry/nacos/registry.go index a3fa06cbc2c18247aa12e9c7e41b4e25829a7091..0dfb64622ec35121b22413aeb46ab7190ee3ae65 100644 --- a/registry/nacos/registry.go +++ b/registry/nacos/registry.go @@ -117,7 +117,7 @@ func newNacosRegistry(url *common.URL) (registry.Registry, error) { registry := nacosRegistry{ URL: url, namingClient: client, - registryUrls: make([]common.URL, 16, 16), + registryUrls: []common.URL{}, } return ®istry, nil } @@ -267,9 +267,9 @@ func (nr *nacosRegistry) IsAvailable() bool { } func (nr *nacosRegistry) Destroy() { - logger.Info("Destroy nacos") for _, url := range nr.registryUrls { err := nr.DeRegister(url) + logger.Infof("DeRegister Nacos url:%+v", url) if err != nil { logger.Errorf("Deregister url:%+v err:%v", url, err.Error()) } diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index a7678ba4e2f38cfeb77f202103e03066a7efdbef..458cde2e860138787b088060128283fd75f1b059 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -44,6 +44,7 @@ import ( ) var ( + once sync.Once regProtocol *registryProtocol ) @@ -154,6 +155,7 @@ func (proto *registryProtocol) Export(invoker protocol.Invoker) protocol.Exporte if regI, loaded := proto.registries.Load(registryUrl.Key()); !loaded { reg = getRegistry(registryUrl) proto.registries.Store(registryUrl.Key(), reg) + logger.Infof("Export proto:%p registries address:%p", proto, proto.registries) } else { reg = regI.(registry.Registry) } @@ -307,14 +309,12 @@ func (proto *registryProtocol) Destroy() { ivk.Destroy() } proto.invokers = []protocol.Invoker{} - proto.bounds.Range(func(key, value interface{}) bool { exporter := value.(protocol.Exporter) exporter.Unexport() proto.bounds.Delete(key) return true }) - proto.registries.Range(func(key, value interface{}) bool { reg := value.(registry.Registry) if reg.IsAvailable() { @@ -348,10 +348,10 @@ func setProviderUrl(regURL *common.URL, providerURL *common.URL) { // GetProtocol ... func GetProtocol() protocol.Protocol { - if regProtocol != nil { - return regProtocol - } - return newRegistryProtocol() + once.Do(func() { + regProtocol = newRegistryProtocol() + }) + return regProtocol } type wrappedInvoker struct {