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