diff --git a/pkg/discoveryregistry/zookeeper/discover.go b/pkg/discoveryregistry/zookeeper/discover.go index 01900e08e..3f5a5df42 100644 --- a/pkg/discoveryregistry/zookeeper/discover.go +++ b/pkg/discoveryregistry/zookeeper/discover.go @@ -107,7 +107,7 @@ func (s *ZkClient) GetConn(ctx context.Context, serviceName string, opts ...grpc if len(conns) == 0 { return nil, ErrConnIsNil } - return s.getConnBalance(conns), nil + return s.getConnBalance(conns) } func (s *ZkClient) GetFirstConn(ctx context.Context, serviceName string, opts ...grpc.DialOption) (*grpc.ClientConn, error) { diff --git a/pkg/discoveryregistry/zookeeper/load_balancing.go b/pkg/discoveryregistry/zookeeper/load_balancing.go index c20639d31..2fee4aa66 100644 --- a/pkg/discoveryregistry/zookeeper/load_balancing.go +++ b/pkg/discoveryregistry/zookeeper/load_balancing.go @@ -11,7 +11,10 @@ type RoundRobin struct { lock sync.Mutex } -func (r *RoundRobin) getConnBalance(conns []*grpc.ClientConn) (conn *grpc.ClientConn) { +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 { @@ -19,5 +22,5 @@ func (r *RoundRobin) getConnBalance(conns []*grpc.ClientConn) (conn *grpc.Client } else { r.index = 0 } - return conns[r.index] + return conns[r.index], nil }