diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go index cf442a1969e2f5fec16003858d235db806a8eb49..5d5f9e0526b7b8a9c5a2e2524f27f03573d758a8 100644 --- a/registry/zookeeper/registry.go +++ b/registry/zookeeper/registry.go @@ -158,7 +158,6 @@ func (r *zkRegistry) DoRegister(root string, node string) error { func (r *zkRegistry) DoUnregister(root string, node string) error { r.cltLock.Lock() defer r.cltLock.Unlock() - if !r.ZkClient().ZkConnValid() { return perrors.Errorf("zk client is not valid.") } diff --git a/remoting/zookeeper/client.go b/remoting/zookeeper/client.go index cc34c76b4274b8e3f51652f170b0d6222122fa04..c66bf4b673f621b4197a095b60f21b9eaf7b179d 100644 --- a/remoting/zookeeper/client.go +++ b/remoting/zookeeper/client.go @@ -278,7 +278,7 @@ LOOP: break LOOP case (int)(zk.EventNodeDataChanged), (int)(zk.EventNodeChildrenChanged): logger.Infof("zkClient{%s} get zk node changed event{path:%s}", z.name, event.Path) - z.Lock() + z.RLock() for p, a := range z.eventRegistry { if strings.HasPrefix(p, event.Path) { logger.Infof("send event{state:zk.EventNodeDataChange, Path:%s} notify event to path{%s} related listener", @@ -288,7 +288,7 @@ LOOP: } } } - z.Unlock() + z.RUnlock() case (int)(zk.StateConnecting), (int)(zk.StateConnected), (int)(zk.StateHasSession): if state == (int)(zk.StateHasSession) { continue @@ -371,11 +371,11 @@ func (z *ZookeeperClient) ZkConnValid() bool { } valid := true - z.Lock() + z.RLock() if z.Conn == nil { valid = false } - z.Unlock() + z.RUnlock() return valid }