From 621f401e348776c411b101e768ced63ed017055e Mon Sep 17 00:00:00 2001 From: gfrancz <52467377+gfrancz@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:46:34 -0500 Subject: [PATCH 1/3] fix: xds-client LrsCallState statsTimer memory leak --- packages/grpc-js-xds/src/xds-client.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/grpc-js-xds/src/xds-client.ts b/packages/grpc-js-xds/src/xds-client.ts index eb37da97..71b03ab5 100644 --- a/packages/grpc-js-xds/src/xds-client.ts +++ b/packages/grpc-js-xds/src/xds-client.ts @@ -682,6 +682,13 @@ class LrsCallState { this.sendStats(); } + destroy() { + if (this.statsTimer) { + this.statsTimer = clearInterval(this.statsTimer); + } + return null; + } + private handleStreamStatus(status: StatusObject) { this.client.trace( 'LRS stream ended. code=' + status.code + ' details= ' + status.details @@ -932,7 +939,7 @@ class XdsSingleServerClient { } handleLrsStreamEnd() { - this.lrsCallState = null; + this.lrsCallState = this.lrsCallState ? this.lrsCallState.destroy() : null; /* The backoff timer would start the stream when it finishes. If it is not * running, restart the stream immediately. */ if (!this.lrsBackoff.isRunning()) { From 588b69c12c884991c415665d2e37492464ba6eb8 Mon Sep 17 00:00:00 2001 From: gfrancz <52467377+gfrancz@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:55:16 -0500 Subject: [PATCH 2/3] Fix type issue by setting the attribute separately Co-authored-by: ws-gregm <55088361+ws-gregm@users.noreply.github.com> --- packages/grpc-js-xds/src/xds-client.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/grpc-js-xds/src/xds-client.ts b/packages/grpc-js-xds/src/xds-client.ts index 71b03ab5..b4d6e24f 100644 --- a/packages/grpc-js-xds/src/xds-client.ts +++ b/packages/grpc-js-xds/src/xds-client.ts @@ -684,7 +684,8 @@ class LrsCallState { destroy() { if (this.statsTimer) { - this.statsTimer = clearInterval(this.statsTimer); + clearInterval(this.statsTimer); + this.statsTimer = null; } return null; } From f1f2b2dd83cf0c3e92e391db85e05b3a9761436c Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Tue, 4 Feb 2025 14:14:37 -0800 Subject: [PATCH 3/3] grpc-js-xds: Bump to version 1.12.2 --- packages/grpc-js-xds/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-js-xds/package.json b/packages/grpc-js-xds/package.json index 09fd3cdb..512ad77e 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.12.1", + "version": "1.12.2", "description": "Plugin for @grpc/grpc-js. Adds the xds:// URL scheme and associated features.", "main": "build/src/index.js", "scripts": {