mirror of https://github.com/grpc/grpc-go.git
c2p: add random number to xDS node ID in google-c2p resolver (#4519)
This commit is contained in:
parent
d30e2c91a0
commit
7301a31174
|
|
@ -31,26 +31,30 @@ var (
|
|||
mu sync.Mutex
|
||||
)
|
||||
|
||||
// Int implements rand.Int on the grpcrand global source.
|
||||
func Int() int {
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
return r.Int()
|
||||
}
|
||||
|
||||
// Int63n implements rand.Int63n on the grpcrand global source.
|
||||
func Int63n(n int64) int64 {
|
||||
mu.Lock()
|
||||
res := r.Int63n(n)
|
||||
mu.Unlock()
|
||||
return res
|
||||
defer mu.Unlock()
|
||||
return r.Int63n(n)
|
||||
}
|
||||
|
||||
// Intn implements rand.Intn on the grpcrand global source.
|
||||
func Intn(n int) int {
|
||||
mu.Lock()
|
||||
res := r.Intn(n)
|
||||
mu.Unlock()
|
||||
return res
|
||||
defer mu.Unlock()
|
||||
return r.Intn(n)
|
||||
}
|
||||
|
||||
// Float64 implements rand.Float64 on the grpcrand global source.
|
||||
func Float64() float64 {
|
||||
mu.Lock()
|
||||
res := r.Float64()
|
||||
mu.Unlock()
|
||||
return res
|
||||
defer mu.Unlock()
|
||||
return r.Float64()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import (
|
|||
"google.golang.org/grpc/grpclog"
|
||||
"google.golang.org/grpc/internal/googlecloud"
|
||||
internalgrpclog "google.golang.org/grpc/internal/grpclog"
|
||||
"google.golang.org/grpc/internal/grpcrand"
|
||||
"google.golang.org/grpc/internal/xds/env"
|
||||
"google.golang.org/grpc/resolver"
|
||||
_ "google.golang.org/grpc/xds" // To register xds resolvers and balancers.
|
||||
|
|
@ -152,13 +153,15 @@ var ipv6EnabledMetadata = &structpb.Struct{
|
|||
},
|
||||
}
|
||||
|
||||
var id = fmt.Sprintf("C2P-%d", grpcrand.Int())
|
||||
|
||||
// newNode makes a copy of defaultNode, and populate it's Metadata and
|
||||
// Locality fields.
|
||||
func newNode(zone string, ipv6Capable bool) *v3corepb.Node {
|
||||
ret := &v3corepb.Node{
|
||||
// Not all required fields are set in defaultNote. Metadata will be set
|
||||
// if ipv6 is enabled. Locality will be set to the value from metadata.
|
||||
Id: "C2P",
|
||||
Id: id,
|
||||
UserAgentName: gRPCUserAgentName,
|
||||
UserAgentVersionType: &v3corepb.Node_UserAgentVersion{UserAgentVersion: grpc.Version},
|
||||
ClientFeatures: []string{clientFeatureNoOverprovisioning},
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ func TestBuildXDS(t *testing.T) {
|
|||
}
|
||||
|
||||
wantNode := &v3corepb.Node{
|
||||
Id: "C2P",
|
||||
Id: id,
|
||||
Metadata: nil,
|
||||
Locality: &v3corepb.Locality{Zone: testZone},
|
||||
UserAgentName: gRPCUserAgentName,
|
||||
|
|
|
|||
Loading…
Reference in New Issue