diff --git a/pkg/discoveryregistry/zookeeper/discover.go b/pkg/discoveryregistry/zookeeper/discover.go index 1a5c29659..610c125e8 100644 --- a/pkg/discoveryregistry/zookeeper/discover.go +++ b/pkg/discoveryregistry/zookeeper/discover.go @@ -74,6 +74,7 @@ func (s *ZkClient) GetConnsRemote(serviceName string) (conns []resolver.Address, func (s *ZkClient) GetConns(ctx context.Context, serviceName string, opts ...grpc.DialOption) ([]*grpc.ClientConn, error) { s.logger.Printf("get conns from client, serviceName: %s", serviceName) s.lock.Lock() + defer s.lock.Unlock() opts = append(s.options, opts...) conns := s.localConns[serviceName] if len(conns) == 0 { @@ -81,12 +82,10 @@ func (s *ZkClient) GetConns(ctx context.Context, serviceName string, opts ...grp s.logger.Printf("get conns from zk remote, serviceName: %s", serviceName) conns, err = s.GetConnsRemote(serviceName) if err != nil { - s.lock.Unlock() return nil, err } s.localConns[serviceName] = conns } - s.lock.Unlock() var ret []*grpc.ClientConn s.logger.Printf("get conns from zk success, serviceName: %s", serviceName) for _, conn := range conns { diff --git a/pkg/discoveryregistry/zookeeper/load_balancing.go b/pkg/discoveryregistry/zookeeper/load_balancing.go deleted file mode 100644 index 2fee4aa66..000000000 --- a/pkg/discoveryregistry/zookeeper/load_balancing.go +++ /dev/null @@ -1,26 +0,0 @@ -package zookeeper - -import ( - "sync" - - "google.golang.org/grpc" -) - -type RoundRobin struct { - index int - lock sync.Mutex -} - -func (r *RoundRobin) getConnBalance(conns []*grpc.ClientConn) (conn *grpc.ClientConn, err error) { - if len(conns) == 0 { - return nil, ErrConnIsNil - } - r.lock.Lock() - defer r.lock.Unlock() - if r.index < len(conns)-1 { - r.index++ - } else { - r.index = 0 - } - return conns[r.index], nil -} diff --git a/pkg/discoveryregistry/zookeeper/zk.go b/pkg/discoveryregistry/zookeeper/zk.go index 0a665e5bf..1247dcc07 100644 --- a/pkg/discoveryregistry/zookeeper/zk.go +++ b/pkg/discoveryregistry/zookeeper/zk.go @@ -40,7 +40,6 @@ type ZkClient struct { resolvers map[string]*Resolver localConns map[string][]resolver.Address balancerName string - RoundRobin logger Logger } @@ -154,6 +153,7 @@ func (s *ZkClient) refresh(wg *sync.WaitGroup) { } func (s *ZkClient) flushResolver(serviceName string) { + s.logger.Printf("start flush") r, ok := s.resolvers[serviceName] if ok { r.ResolveNow(resolver.ResolveNowOptions{})