Skip to content

Commit 5e01f0f

Browse files
author
Eren Boz
committed
add some more test for defensive cases and generate new names upon all used up
1 parent a01d901 commit 5e01f0f

2 files changed

Lines changed: 238 additions & 43 deletions

File tree

internal/xds/balancer/clusterresolver/configbuilder_childname.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package clusterresolver
1919

2020
import (
2121
"fmt"
22-
2322
"google.golang.org/grpc/internal/xds/clients"
2423
"google.golang.org/grpc/internal/xds/xdsclient/xdsresource"
2524
)
@@ -57,14 +56,12 @@ func newNameGenerator(prefix uint64) *nameGenerator {
5756
func (ng *nameGenerator) generate(priorities [][]xdsresource.Locality) []string {
5857
var ret []string
5958
usedNames := make(map[string]bool)
60-
6159
for _, priority := range priorities {
6260
var candidates []string
6361
for _, locality := range priority {
6462
name, exists := ng.existingNames[locality.ID]
6563
if !exists {
66-
name = fmt.Sprintf("priority-%d-%d", ng.prefix, ng.nextID)
67-
ng.nextID++
64+
name = ng.generateNewName(name)
6865
ng.existingNames[locality.ID] = name
6966
}
7067
candidates = append(candidates, name)
@@ -77,9 +74,19 @@ func (ng *nameGenerator) generate(priorities [][]xdsresource.Locality) []string
7774
break
7875
}
7976
}
77+
if chosenName == "" {
78+
// All candidate names are used, generate a new name.
79+
chosenName = ng.generateNewName(chosenName)
80+
}
8081

8182
ret = append(ret, chosenName)
8283
usedNames[chosenName] = true
8384
}
8485
return ret
8586
}
87+
88+
func (ng *nameGenerator) generateNewName(name string) string {
89+
name = fmt.Sprintf("priority-%d-%d", ng.prefix, ng.nextID)
90+
ng.nextID++
91+
return name
92+
}

0 commit comments

Comments
 (0)