From 30bc44f4ce54811022b84e0623d3757bea71736b Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Wed, 2 Aug 2023 16:48:57 -0700 Subject: [PATCH] grpc-js: Handle race between call cancellation and auth metadata generation --- packages/grpc-js/src/load-balancing-call.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/grpc-js/src/load-balancing-call.ts b/packages/grpc-js/src/load-balancing-call.ts index 6e9718a7..b6c99094 100644 --- a/packages/grpc-js/src/load-balancing-call.ts +++ b/packages/grpc-js/src/load-balancing-call.ts @@ -140,6 +140,12 @@ export class LoadBalancingCall implements Call { .generateMetadata({ service_url: this.serviceUrl }) .then( credsMetadata => { + /* If this call was cancelled (e.g. by the deadline) before + * metadata generation finished, we shouldn't do anything with + * it. */ + if (this.ended) { + return; + } const finalMetadata = this.metadata!.clone(); finalMetadata.merge(credsMetadata); if (finalMetadata.get('authorization').length > 1) {