diff --git a/packages/grpc-js/src/server.ts b/packages/grpc-js/src/server.ts index a6edee3b..22fb3c72 100644 --- a/packages/grpc-js/src/server.ts +++ b/packages/grpc-js/src/server.ts @@ -500,10 +500,12 @@ export class Server { } } - // If any sessions are active, close them gracefully. pendingChecks += this.sessions.size; this.sessions.forEach((session) => { - session.close(maybeCallback); + if (!session.closed) { + pendingChecks += 1; + session.close(maybeCallback); + } }); if (pendingChecks === 0) { callback(); @@ -608,6 +610,10 @@ export class Server { } this.sessions.add(session); + + session.on('close', () => { + this.sessions.delete(session); + }); }); } }