Merge pull request #2898 from murgatroid99/grpc-js-xds_memory_leak_backport_1.12.x

grpc-js-xds: fix LrsCallState statsTimer memory leak
This commit is contained in:
Michael Lumish 2025-02-04 14:47:29 -08:00 committed by GitHub
commit 656ca0c00e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 2 deletions

View File

@ -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": {

View File

@ -682,6 +682,14 @@ class LrsCallState {
this.sendStats();
}
destroy() {
if (this.statsTimer) {
clearInterval(this.statsTimer);
this.statsTimer = null;
}
return null;
}
private handleStreamStatus(status: StatusObject) {
this.client.trace(
'LRS stream ended. code=' + status.code + ' details= ' + status.details
@ -932,7 +940,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()) {