From 43e024f81d30fd8b4aa4418e68d9e3020b17648c Mon Sep 17 00:00:00 2001 From: lzp0412 <641785844@qq.com> Date: Tue, 21 Jul 2020 10:05:47 +0800 Subject: [PATCH] fix not invoke nacos destroy when graceful shutdown --- config/graceful_shutdown_signal_darwin.go | 2 +- registry/nacos/registry.go | 4 ++-- registry/protocol/protocol.go | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/config/graceful_shutdown_signal_darwin.go b/config/graceful_shutdown_signal_darwin.go index 8ad79ffa6..3129ab32b 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 a3fa06cbc..0dfb64622 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 a7678ba4e..458cde2e8 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 { -- GitLab