diff --git a/registry/servicediscovery/service_discovery_registry.go b/registry/servicediscovery/service_discovery_registry.go index d6cce32f929ad7a4558e3af099a0dd3dbcd779af..31c0ed18eeafe3c90ff212ba61a3881659c2cf0e 100644 --- a/registry/servicediscovery/service_discovery_registry.go +++ b/registry/servicediscovery/service_discovery_registry.go @@ -263,9 +263,9 @@ func (s *serviceDiscoveryRegistry) Subscribe(url *common.URL, notify registry.No } s.registerServiceInstancesChangedListener(*url, listener) } - return nil } + func (s *serviceDiscoveryRegistry) registerServiceInstancesChangedListener(url common.URL, listener *registry.ServiceInstancesChangedListener) { listenerId := listener.ServiceName + ":" + getUrlKey(url) if !s.subscribedServices.Contains(listenerId) { @@ -335,6 +335,7 @@ func (s *serviceDiscoveryRegistry) synthesizeSubscribedURLs(subscribedURL *commo } return urls } + func shouldSubscribe(url common.URL) bool { return !shouldRegister(url) } diff --git a/remoting/zookeeper/curator_discovery/service_discovery.go b/remoting/zookeeper/curator_discovery/service_discovery.go index 1b52a53d80a35a67cff463b275628588768a6085..6924507b140c000794b002559f662d8e22999710 100644 --- a/remoting/zookeeper/curator_discovery/service_discovery.go +++ b/remoting/zookeeper/curator_discovery/service_discovery.go @@ -22,8 +22,6 @@ import ( "path" "strings" "sync" - - "github.com/dubbogo/go-zookeeper/zk" ) import ( @@ -31,6 +29,8 @@ import ( ) import ( + "github.com/dubbogo/go-zookeeper/zk" + "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/logger" "github.com/apache/dubbo-go/remoting" @@ -119,14 +119,17 @@ func (sd *ServiceDiscovery) UpdateService(instance *ServiceInstance) error { if !ok { return perrors.New("[ServiceDiscovery] services value not entry") } - entry.Lock() - defer entry.Unlock() - entry.instance = instance - path := sd.pathForInstance(instance.Name, instance.Id) data, err := json.Marshal(instance) + if err != nil { return err } + + entry.Lock() + defer entry.Unlock() + entry.instance = instance + path := sd.pathForInstance(instance.Name, instance.Id) + _, err = sd.client.SetContent(path, data, -1) if err != nil { return err