From fca3058db96d2458a1b2249d226b4e1e163f0e85 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 29 Jun 2023 16:42:52 +0800 Subject: [PATCH] watch --- pkg/discoveryregistry/zookeeper/discover.go | 29 +++++++++++---------- pkg/discoveryregistry/zookeeper/register.go | 9 +++++++ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/pkg/discoveryregistry/zookeeper/discover.go b/pkg/discoveryregistry/zookeeper/discover.go index c7b1d5473..f02ba6a7d 100644 --- a/pkg/discoveryregistry/zookeeper/discover.go +++ b/pkg/discoveryregistry/zookeeper/discover.go @@ -44,25 +44,26 @@ func (s *ZkClient) watch() { func (s *ZkClient) GetConnsRemote(serviceName string) (conns []resolver.Address, err error) { path := s.getPath(serviceName) + _, _, _, err = s.conn.ChildrenW(path) + if err != nil { + return nil, errors.Wrap(err, "children watch error") + } childNodes, _, err := s.conn.Children(path) if err != nil { return nil, errors.Wrap(err, "get children error") - } - for _, child := range childNodes { - fullPath := path + "/" + child - data, _, err := s.conn.Get(fullPath) - if err != nil { - if err == zk.ErrNoNode { - return nil, errors.Wrap(err, "this is zk ErrNoNode") + } else { + for _, child := range childNodes { + fullPath := path + "/" + child + data, _, err := s.conn.Get(fullPath) + if err != nil { + if err == zk.ErrNoNode { + return nil, errors.Wrap(err, "this is zk ErrNoNode") + } + return nil, errors.Wrap(err, "get children error") } - return nil, errors.Wrap(err, "get children error") + log.ZDebug(context.Background(), "get conns from remote", "conn", string(data)) + conns = append(conns, resolver.Address{Addr: string(data), ServerName: serviceName}) } - log.ZDebug(context.Background(), "get conns from remote", "conn", string(data)) - conns = append(conns, resolver.Address{Addr: string(data), ServerName: serviceName}) - } - _, _, _, err = s.conn.ChildrenW(path) - if err != nil { - return nil, errors.Wrap(err, "children watch error") } return conns, nil } diff --git a/pkg/discoveryregistry/zookeeper/register.go b/pkg/discoveryregistry/zookeeper/register.go index 097481abd..7347c4b55 100644 --- a/pkg/discoveryregistry/zookeeper/register.go +++ b/pkg/discoveryregistry/zookeeper/register.go @@ -8,6 +8,15 @@ import ( "google.golang.org/grpc/resolver" ) +func (s *ZkClient) CreateRpcRootNodes(serviceNames []string) error { + for _, serviceName := range serviceNames { + if err := s.ensureName(serviceName); err != nil { + return err + } + } + return nil +} + func (s *ZkClient) Register(rpcRegisterName, host string, port int, opts ...grpc.DialOption) error { if err := s.ensureName(rpcRegisterName); err != nil { return err