From 08dd1149518de14159b554347cbb0818db09ae39 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Fri, 24 Apr 2020 11:34:26 -0700 Subject: [PATCH] grpc-js: Add attributes argument passed from resolver to load balancer --- packages/grpc-js/src/load-balancer.ts | 3 ++- packages/grpc-js/src/resolver-dns.ts | 11 +++++++---- packages/grpc-js/src/resolver-uds.ts | 3 ++- packages/grpc-js/src/resolver.ts | 3 ++- packages/grpc-js/src/resolving-load-balancer.ts | 12 ++++++++---- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/grpc-js/src/load-balancer.ts b/packages/grpc-js/src/load-balancer.ts index 5fa4bdc5..b1710467 100644 --- a/packages/grpc-js/src/load-balancer.ts +++ b/packages/grpc-js/src/load-balancer.ts @@ -67,7 +67,8 @@ export interface LoadBalancer { */ updateAddressList( addressList: SubchannelAddress[], - lbConfig: LoadBalancingConfig | null + lbConfig: LoadBalancingConfig | null, + attributes: {[key: string]: unknown} ): void; /** * If the load balancer is currently in the IDLE state, start connecting. diff --git a/packages/grpc-js/src/resolver-dns.ts b/packages/grpc-js/src/resolver-dns.ts index 274d8c34..016f3bd1 100644 --- a/packages/grpc-js/src/resolver-dns.ts +++ b/packages/grpc-js/src/resolver-dns.ts @@ -124,7 +124,7 @@ class DnsResolver implements Resolver { if (this.ipResult !== null) { trace('Returning IP address for target ' + uriToString(this.target)); setImmediate(() => { - this.listener.onSuccessfulResolution(this.ipResult!, null, null); + this.listener.onSuccessfulResolution(this.ipResult!, null, null, {}); }); return; } @@ -186,7 +186,8 @@ class DnsResolver implements Resolver { this.listener.onSuccessfulResolution( this.latestLookupResult, this.latestServiceConfig, - this.latestServiceConfigError + this.latestServiceConfigError, + {} ); }, (err) => { @@ -230,7 +231,8 @@ class DnsResolver implements Resolver { this.listener.onSuccessfulResolution( this.latestLookupResult, this.latestServiceConfig, - this.latestServiceConfigError + this.latestServiceConfigError, + {} ); } }, @@ -244,7 +246,8 @@ class DnsResolver implements Resolver { this.listener.onSuccessfulResolution( this.latestLookupResult, this.latestServiceConfig, - this.latestServiceConfigError + this.latestServiceConfigError, + {} ); } } diff --git a/packages/grpc-js/src/resolver-uds.ts b/packages/grpc-js/src/resolver-uds.ts index 759cb233..0bc92991 100644 --- a/packages/grpc-js/src/resolver-uds.ts +++ b/packages/grpc-js/src/resolver-uds.ts @@ -38,7 +38,8 @@ class UdsResolver implements Resolver { this.listener.onSuccessfulResolution, this.addresses, null, - null + null, + {} ); } diff --git a/packages/grpc-js/src/resolver.ts b/packages/grpc-js/src/resolver.ts index 7d6d1ad5..cef0c1f4 100644 --- a/packages/grpc-js/src/resolver.ts +++ b/packages/grpc-js/src/resolver.ts @@ -39,7 +39,8 @@ export interface ResolverListener { onSuccessfulResolution( addressList: SubchannelAddress[], serviceConfig: ServiceConfig | null, - serviceConfigError: StatusObject | null + serviceConfigError: StatusObject | null, + attributes: {[key: string]: unknown} ): void; /** * Called whenever a name resolution attempt fails. diff --git a/packages/grpc-js/src/resolving-load-balancer.ts b/packages/grpc-js/src/resolving-load-balancer.ts index 48f1ddd4..75ea6eaa 100644 --- a/packages/grpc-js/src/resolving-load-balancer.ts +++ b/packages/grpc-js/src/resolving-load-balancer.ts @@ -136,7 +136,8 @@ export class ResolvingLoadBalancer implements LoadBalancer { onSuccessfulResolution: ( addressList: SubchannelAddress[], serviceConfig: ServiceConfig | null, - serviceConfigError: ServiceError | null + serviceConfigError: ServiceError | null, + attributes: {[key: string]: unknown} ) => { let workingServiceConfig: ServiceConfig | null = null; /* This first group of conditionals implements the algorithm described @@ -211,12 +212,14 @@ export class ResolvingLoadBalancer implements LoadBalancer { )!; this.innerLoadBalancer.updateAddressList( addressList, - loadBalancingConfig + loadBalancingConfig, + attributes ); } else if (this.innerLoadBalancer.getTypeName() === loadBalancerName) { this.innerLoadBalancer.updateAddressList( addressList, - loadBalancingConfig + loadBalancingConfig, + attributes ); } else { if ( @@ -234,7 +237,8 @@ export class ResolvingLoadBalancer implements LoadBalancer { } this.pendingReplacementLoadBalancer.updateAddressList( addressList, - loadBalancingConfig + loadBalancingConfig, + attributes ); } },