Skip to content

Commit

Permalink
Merge pull request #2380 from murgatroid99/grpc-js_pick_first_fix2
Browse files Browse the repository at this point in the history
grpc-js: Fix address equality check in pick-first
  • Loading branch information
murgatroid99 committed Mar 7, 2023
2 parents e66909d + 0726fdf commit 7aba000
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
2 changes: 1 addition & 1 deletion packages/grpc-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@grpc/grpc-js",
"version": "1.8.11",
"version": "1.8.12",
"description": "gRPC Library for Node - pure JS implementation",
"homepage": "https://grpc.io/",
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",
Expand Down
3 changes: 2 additions & 1 deletion packages/grpc-js/src/load-balancer-pick-first.ts
Original file line number Diff line number Diff line change
Expand Up @@ -420,8 +420,9 @@ export class PickFirstLoadBalancer implements LoadBalancer {
* address list is different from the existing one */
if (
this.subchannels.length === 0 ||
this.latestAddressList.length !== addressList.length ||
!this.latestAddressList.every(
(value, index) => subchannelAddressEqual(addressList[index], value)
(value, index) => addressList[index] && subchannelAddressEqual(addressList[index], value)
)
) {
this.latestAddressList = addressList;
Expand Down
10 changes: 8 additions & 2 deletions packages/grpc-js/src/subchannel-address.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,15 @@ export function isTcpSubchannelAddress(
}

export function subchannelAddressEqual(
address1: SubchannelAddress,
address2: SubchannelAddress
address1?: SubchannelAddress,
address2?: SubchannelAddress
): boolean {
if (!address1 && !address2) {
return true;
}
if (!address1 || !address2) {
return false;
}
if (isTcpSubchannelAddress(address1)) {
return (
isTcpSubchannelAddress(address2) &&
Expand Down

0 comments on commit 7aba000

Please sign in to comment.