diff --git a/changelog/unreleased/client-selector-pool.md b/changelog/unreleased/client-selector-pool.md new file mode 100644 index 00000000000..c71a436a9fb --- /dev/null +++ b/changelog/unreleased/client-selector-pool.md @@ -0,0 +1,6 @@ +Enhancement: client selector pool + +Add the ability to use iterable client pools for the grpc service communication, +the underlying grpc client and connection is fetched randomly from the available services. + +https://github.com/cs3org/reva/pull/3939 diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go index f30ea64e67b..1595726f094 100644 --- a/pkg/registry/registry.go +++ b/pkg/registry/registry.go @@ -20,6 +20,7 @@ package registry import ( mRegistry "go-micro.dev/v4/registry" + "go-micro.dev/v4/selector" ) var ( @@ -37,6 +38,18 @@ func Init(nRegistry mRegistry.Registry) error { return nil } +// GetRegistry exposes the registry func GetRegistry() mRegistry.Registry { return gRegistry } + +// GetNodeAddress returns a random address from the service nodes +func GetNodeAddress(services []*mRegistry.Service) (string, error) { + next := selector.Random(services) + node, err := next() + if err != nil { + return "", err + } + + return node.Address, nil +} diff --git a/pkg/registry/service.go b/pkg/registry/service.go deleted file mode 100644 index 9766ece7065..00000000000 --- a/pkg/registry/service.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018-2023 CERN -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// In applying this license, CERN does not waive the privileges and immunities -// granted to it by virtue of its status as an Intergovernmental Organization -// or submit itself to any jurisdiction. - -package registry - -import ( - mRegistry "go-micro.dev/v4/registry" - "go-micro.dev/v4/selector" -) - -// GetNodeAddress returns a random address from the service nodes -func GetNodeAddress(services []*mRegistry.Service) (string, error) { - next := selector.Random(services) - node, err := next() - if err != nil { - return "", err - } - - return node.Address, err -}