From 815992d4fc7e7502d26c40cdef355aa2e3c322c5 Mon Sep 17 00:00:00 2001 From: Menghan Li Date: Fri, 4 Jun 2021 15:40:06 -0700 Subject: [PATCH] [c2p_id_random] c2p: add random number to xDS node ID in google-c2p resolver --- internal/grpcrand/grpcrand.go | 7 +++++++ xds/googledirectpath/googlec2p.go | 5 ++++- xds/googledirectpath/googlec2p_test.go | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/grpcrand/grpcrand.go b/internal/grpcrand/grpcrand.go index 200b115ca209..97de06fe7216 100644 --- a/internal/grpcrand/grpcrand.go +++ b/internal/grpcrand/grpcrand.go @@ -31,6 +31,13 @@ var ( mu sync.Mutex ) +func Int() int { + mu.Lock() + res := r.Int() + mu.Unlock() + return res +} + // Int63n implements rand.Int63n on the grpcrand global source. func Int63n(n int64) int64 { mu.Lock() diff --git a/xds/googledirectpath/googlec2p.go b/xds/googledirectpath/googlec2p.go index b514f03bfbfa..af487ec4a736 100644 --- a/xds/googledirectpath/googlec2p.go +++ b/xds/googledirectpath/googlec2p.go @@ -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}, diff --git a/xds/googledirectpath/googlec2p_test.go b/xds/googledirectpath/googlec2p_test.go index 5b8085ef34c3..fb68fa23a1d0 100644 --- a/xds/googledirectpath/googlec2p_test.go +++ b/xds/googledirectpath/googlec2p_test.go @@ -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,