diff --git a/registry/zookeeper/listener.go b/registry/zookeeper/listener.go index c5b2f33c6107e82aa172c818c0d8aca1483248c6..816e39bef5e8544de746cc950c599bf48eb14148 100644 --- a/registry/zookeeper/listener.go +++ b/registry/zookeeper/listener.go @@ -111,7 +111,6 @@ type RegistryConfigurationListener struct { // NewRegistryConfigurationListener for listening the event of zk. func NewRegistryConfigurationListener(client *zk.ZookeeperClient, reg *zkRegistry) *RegistryConfigurationListener { - reg.WaitGroup().Add(1) return &RegistryConfigurationListener{client: client, registry: reg, events: make(chan *config_center.ConfigChangeEvent, 32), isClosed: false, close: make(chan struct{}, 1)} } diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go index 1e7bd08adef5ac9920413fd198b726f49c11ecd4..04316bd9d88bbf84d2d0afdddedb78d37707856c 100644 --- a/registry/zookeeper/registry.go +++ b/registry/zookeeper/registry.go @@ -134,6 +134,7 @@ func (r *zkRegistry) InitListeners() { regConfigListener.Close() } newDataListener.SubscribeURL(conf, NewRegistryConfigurationListener(r.client, r)) + r.WaitGroup().Add(1) go r.listener.ListenServiceEvent(conf, fmt.Sprintf("/dubbo/%s/"+constant.DEFAULT_CATEGORY, url.QueryEscape(conf.Service())), newDataListener) } @@ -259,7 +260,7 @@ func (r *zkRegistry) getListener(conf *common.URL) (*RegistryConfigurationListen //Interested register to dataconfig. r.dataListener.SubscribeURL(conf, zkListener) - + r.WaitGroup().Add(1) go r.listener.ListenServiceEvent(conf, fmt.Sprintf("/dubbo/%s/"+constant.DEFAULT_CATEGORY, url.QueryEscape(conf.Service())), r.dataListener) return zkListener, nil diff --git a/remoting/zookeeper/listener.go b/remoting/zookeeper/listener.go index 5188ce8c44355cf78eeb8c6078ab4f2f49e516db..1ffea88a862552f1a45af0806a829902e63ed55e 100644 --- a/remoting/zookeeper/listener.go +++ b/remoting/zookeeper/listener.go @@ -77,13 +77,21 @@ func (l *ZkEventListener) ListenServiceNodeEvent(zkPath string, listener ...remo case zk.EventNodeDataChanged: logger.Warnf("zk.ExistW(key{%s}) = event{EventNodeDataChanged}", zkPath) if len(listener) > 0 { - content, _, _ := l.client.Conn.Get(zkEvent.Path) + content, _, err := l.client.Conn.Get(zkEvent.Path) + if err != nil { + logger.Warnf("zk.Conn.Get{key:%s} = error{%v}", zkPath, err) + return false + } listener[0].DataChange(remoting.Event{Path: zkEvent.Path, Action: remoting.EventTypeUpdate, Content: string(content)}) } case zk.EventNodeCreated: logger.Warnf("zk.ExistW(key{%s}) = event{EventNodeCreated}", zkPath) if len(listener) > 0 { - content, _, _ := l.client.Conn.Get(zkEvent.Path) + content, _, err := l.client.Conn.Get(zkEvent.Path) + if err != nil { + logger.Warnf("zk.Conn.Get{key:%s} = error{%v}", zkPath, err) + return false + } listener[0].DataChange(remoting.Event{Path: zkEvent.Path, Action: remoting.EventTypeAdd, Content: string(content)}) } case zk.EventNotWatching: