From 356518a212355f90dd1248a2f6c7565771078ecc Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 13:56:57 -0800 Subject: [PATCH 1/6] grpc-js-xds: Fix handling of empty LRS server names --- packages/grpc-js-xds/package.json | 2 +- packages/grpc-js-xds/scripts/xds.sh | 2 +- packages/grpc-js-xds/src/load-balancer-eds.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/grpc-js-xds/package.json b/packages/grpc-js-xds/package.json index 5ff82e49d..b5c9d3f15 100644 --- a/packages/grpc-js-xds/package.json +++ b/packages/grpc-js-xds/package.json @@ -1,6 +1,6 @@ { "name": "@grpc/grpc-js-xds", - "version": "1.2.2", + "version": "1.2.3", "description": "Plugin for @grpc/grpc-js. Adds the xds:// URL scheme and associated features.", "main": "build/src/index.js", "scripts": { diff --git a/packages/grpc-js-xds/scripts/xds.sh b/packages/grpc-js-xds/scripts/xds.sh index bbfc30562..4629f42a7 100644 --- a/packages/grpc-js-xds/scripts/xds.sh +++ b/packages/grpc-js-xds/scripts/xds.sh @@ -52,7 +52,7 @@ GRPC_NODE_TRACE=xds_client,xds_resolver,cds_balancer,eds_balancer,priority,weigh GRPC_NODE_VERBOSITY=DEBUG \ NODE_XDS_INTEROP_VERBOSITY=1 \ python3 grpc/tools/run_tests/run_xds_tests.py \ - --test_case="backends_restart,change_backend_service,gentle_failover,ping_pong,remove_instance_group,round_robin,secondary_locality_gets_no_requests_on_partial_primary_failure,secondary_locality_gets_requests_on_primary_failure" \ + --test_case="backends_restart,change_backend_service,gentle_failover,ping_pong,remove_instance_group,round_robin,secondary_locality_gets_no_requests_on_partial_primary_failure,secondary_locality_gets_requests_on_primary_failure,load_report_based_failover" \ --project_id=grpc-testing \ --source_image=projects/grpc-testing/global/images/xds-test-server-2 \ --path_to_server_binary=/java_server/grpc-java/interop-testing/build/install/grpc-interop-testing/bin/xds-test-server \ diff --git a/packages/grpc-js-xds/src/load-balancer-eds.ts b/packages/grpc-js-xds/src/load-balancer-eds.ts index 8919f3174..93cc64218 100644 --- a/packages/grpc-js-xds/src/load-balancer-eds.ts +++ b/packages/grpc-js-xds/src/load-balancer-eds.ts @@ -377,7 +377,7 @@ export class EdsLoadBalancer implements LoadBalancer { validateLoadBalancingConfig({ round_robin: {} }), ]; let childPolicy: LoadBalancingConfig[]; - if (this.lastestConfig.getLrsLoadReportingServerName()) { + if (this.lastestConfig.getLrsLoadReportingServerName() !== undefined) { childPolicy = [new LrsLoadBalancingConfig(this.lastestConfig.getCluster(), this.lastestConfig.getEdsServiceName() ?? '', this.lastestConfig.getLrsLoadReportingServerName()!, localityObj.locality, endpointPickingPolicy)]; } else { childPolicy = endpointPickingPolicy; From 1702014385d00ec1c58fd6f91d35184414a6064d Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 14:01:59 -0800 Subject: [PATCH 2/6] Borrow Linux Kokoro job for xDS testing --- test/kokoro/linux.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/kokoro/linux.cfg b/test/kokoro/linux.cfg index f40e6db43..16a7dc7dc 100644 --- a/test/kokoro/linux.cfg +++ b/test/kokoro/linux.cfg @@ -15,10 +15,10 @@ # Config file for Kokoro (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc-node/test/kokoro.sh" -timeout_mins: 60 +build_file: "grpc-node/packages/grpc-js-xds/scripts/xds.sh" +timeout_mins: 120 action { define_artifacts { - regex: "github/grpc-node/reports/**/sponge_log.xml" + regex: "github/grpc/reports/**" } } From b85c70839f4494371d586d463cd2f877c448d0d9 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 11:50:30 -0800 Subject: [PATCH 3/6] Add more detailed LRS tracing --- packages/grpc-js-xds/src/xds-client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-js-xds/src/xds-client.ts b/packages/grpc-js-xds/src/xds-client.ts index 7f6586573..f147da0eb 100644 --- a/packages/grpc-js-xds/src/xds-client.ts +++ b/packages/grpc-js-xds/src/xds-client.ts @@ -1068,7 +1068,6 @@ export class XdsClient { if (!this.lrsCall) { return; } - trace('Sending LRS stats'); const clusterStats: ClusterStats[] = []; for (const [ { clusterName, edsServiceName }, @@ -1129,6 +1128,7 @@ export class XdsClient { } } } + trace('Sending LRS stats ' + JSON.stringify(clusterStats, undefined, 2)); this.lrsCall.write({ node: this.lrsNode!, cluster_stats: clusterStats, From e3b35505a0aff40b8a1adabafb5a5443bf7ce7d9 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 13:53:02 -0800 Subject: [PATCH 4/6] Fix handling of LRS server name in EDS child config generation Also add more LRS logging --- packages/grpc-js-xds/src/load-balancer-lrs.ts | 1 - packages/grpc-js-xds/src/xds-client.ts | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/grpc-js-xds/src/load-balancer-lrs.ts b/packages/grpc-js-xds/src/load-balancer-lrs.ts index b6fa68091..5f860b170 100644 --- a/packages/grpc-js-xds/src/load-balancer-lrs.ts +++ b/packages/grpc-js-xds/src/load-balancer-lrs.ts @@ -16,7 +16,6 @@ */ import { connectivityState as ConnectivityState, StatusObject, status as Status, experimental } from '@grpc/grpc-js'; -import { type } from 'os'; import { Locality__Output } from './generated/envoy/api/v2/core/Locality'; import { XdsClusterLocalityStats, XdsClient } from './xds-client'; import LoadBalancer = experimental.LoadBalancer; diff --git a/packages/grpc-js-xds/src/xds-client.ts b/packages/grpc-js-xds/src/xds-client.ts index f147da0eb..56ddddf93 100644 --- a/packages/grpc-js-xds/src/xds-client.ts +++ b/packages/grpc-js-xds/src/xds-client.ts @@ -1174,6 +1174,7 @@ export class XdsClient { clusterName: string, edsServiceName: string ): XdsClusterDropStats { + trace('addClusterDropStats(lrsServer=' + lrsServer + ', clusterName=' + clusterName + ', edsServiceName=' + edsServiceName + ')'); if (lrsServer !== '') { return { addCallDropped: (category) => {}, @@ -1197,6 +1198,7 @@ export class XdsClient { edsServiceName: string, locality: Locality__Output ): XdsClusterLocalityStats { + trace('addClusterLocalityStats(lrsServer=' + lrsServer + ', clusterName=' + clusterName + ', edsServiceName=' + edsServiceName + ', locality=' + JSON.stringify(locality) + ')'); if (lrsServer !== '') { return { addCallStarted: () => {}, From efc9a0f05c9e2dbbfe2758e6df8cb5527903cc9f Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 16:34:53 -0800 Subject: [PATCH 5/6] Don't send status through the filter stack twice when receiving trailers --- packages/grpc-js-xds/package.json | 2 +- packages/grpc-js/package.json | 2 +- packages/grpc-js/src/call-stream.ts | 15 +-------------- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/packages/grpc-js-xds/package.json b/packages/grpc-js-xds/package.json index b5c9d3f15..6ff858160 100644 --- a/packages/grpc-js-xds/package.json +++ b/packages/grpc-js-xds/package.json @@ -45,7 +45,7 @@ "@grpc/proto-loader": "^0.6.0-pre14" }, "peerDependencies": { - "@grpc/grpc-js": "~1.2.7" + "@grpc/grpc-js": "~1.2.10" }, "engines": { "node": ">=10.10.0" diff --git a/packages/grpc-js/package.json b/packages/grpc-js/package.json index 8fffe4beb..939827b28 100644 --- a/packages/grpc-js/package.json +++ b/packages/grpc-js/package.json @@ -1,6 +1,6 @@ { "name": "@grpc/grpc-js", - "version": "1.2.9", + "version": "1.2.10", "description": "gRPC Library for Node - pure JS implementation", "homepage": "https://grpc.io/", "repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js", diff --git a/packages/grpc-js/src/call-stream.ts b/packages/grpc-js/src/call-stream.ts index a51c1da28..8fcc7065e 100644 --- a/packages/grpc-js/src/call-stream.ts +++ b/packages/grpc-js/src/call-stream.ts @@ -442,21 +442,8 @@ export class Http2CallStream implements Call { ); } const status: StatusObject = { code, details, metadata }; - let finalStatus; - try { - // Attempt to assign final status. - finalStatus = this.filterStack.receiveTrailers(status); - } catch (error) { - // This is a no-op if the call was already ended when handling headers. - this.endCall({ - code: Status.INTERNAL, - details: 'Failed to process received status', - metadata: new Metadata(), - }); - return; - } // This is a no-op if the call was already ended when handling headers. - this.endCall(finalStatus); + this.endCall(status); } attachHttp2Stream( From 31074190ff01cc9c05ff103a702f9f550ee70ce5 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 4 Mar 2021 18:31:18 -0800 Subject: [PATCH 6/6] Revert "Borrow Linux Kokoro job for xDS testing" This reverts commit 1702014385d00ec1c58fd6f91d35184414a6064d. --- test/kokoro/linux.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/kokoro/linux.cfg b/test/kokoro/linux.cfg index 16a7dc7dc..f40e6db43 100644 --- a/test/kokoro/linux.cfg +++ b/test/kokoro/linux.cfg @@ -15,10 +15,10 @@ # Config file for Kokoro (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc-node/packages/grpc-js-xds/scripts/xds.sh" -timeout_mins: 120 +build_file: "grpc-node/test/kokoro.sh" +timeout_mins: 60 action { define_artifacts { - regex: "github/grpc/reports/**" + regex: "github/grpc-node/reports/**/sponge_log.xml" } }