Skip to content

Commit

Permalink
Merge pull request #2898 from murgatroid99/grpc-js-xds_memory_leak_ba…
Browse files Browse the repository at this point in the history
…ckport_1.12.x

grpc-js-xds: fix LrsCallState statsTimer memory leak
  • Loading branch information
murgatroid99 authored Feb 4, 2025
2 parents 6bd791d + f1f2b2d commit 656ca0c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
2 changes: 1 addition & 1 deletion packages/grpc-js-xds/package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
10 changes: 9 additions & 1 deletion packages/grpc-js-xds/src/xds-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()) {
Expand Down

0 comments on commit 656ca0c

Please sign in to comment.