From 55087d21c4d4752731c7812d6649eb75dccb275b Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 24 Feb 2022 09:09:54 -0800 Subject: [PATCH] grpc-js: Transition subchannel to TRANSIENT_FAILURE when the socket closes --- packages/grpc-js/package.json | 2 +- packages/grpc-js/src/subchannel.ts | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/grpc-js/package.json b/packages/grpc-js/package.json index d7708194..f41de376 100644 --- a/packages/grpc-js/package.json +++ b/packages/grpc-js/package.json @@ -1,6 +1,6 @@ { "name": "@grpc/grpc-js", - "version": "1.5.6", + "version": "1.5.7", "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/subchannel.ts b/packages/grpc-js/src/subchannel.ts index 524e3631..24f02144 100644 --- a/packages/grpc-js/src/subchannel.ts +++ b/packages/grpc-js/src/subchannel.ts @@ -669,9 +669,15 @@ export class Subchannel { switch (newState) { case ConnectivityState.READY: this.stopBackoff(); - this.session!.socket.once('close', () => { - for (const listener of this.disconnectListeners) { - listener(); + const session = this.session!; + session.socket.once('close', () => { + if (this.session === session) { + this.transitionToState( + [ConnectivityState.READY], + ConnectivityState.TRANSIENT_FAILURE); + for (const listener of this.disconnectListeners) { + listener(); + } } }); if (this.keepaliveWithoutCalls) {