diff --git a/registry/random_selector.go b/registry/random_selector.go index a5b012d7..7f4d60b1 100644 --- a/registry/random_selector.go +++ b/registry/random_selector.go @@ -48,7 +48,15 @@ func (r *randomSelector) Select(service string, opts ...SelectOption) (SelectNex } return func() (*Node, error) { - return nodes[rand.Int()%len(nodes)], nil + i := rand.Int() + j := i % len(services) + + if len(services[j].Nodes) == 0 { + return nil, ErrNotFound + } + + k := i % len(services[j].Nodes) + return services[j].Nodes[k], nil }, nil }