From f5d8b73c747a0db5cb36e83e6fe022a19a544bd2 Mon Sep 17 00:00:00 2001 From: Tyson Andre Date: Wed, 24 Nov 2021 01:29:00 -0500 Subject: [PATCH] fix: fix a memory leak with autopipelining. (#1470) --- lib/autoPipelining.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/autoPipelining.ts b/lib/autoPipelining.ts index 40b45633..0251dd14 100644 --- a/lib/autoPipelining.ts +++ b/lib/autoPipelining.ts @@ -45,6 +45,10 @@ function executeAutoPipeline(client, slotKey: string) { client._autoPipelines.delete(slotKey); const callbacks = pipeline[kCallbacks]; + // Stop keeping a reference to callbacks immediately after the callbacks stop being used. + // This allows the GC to reclaim objects referenced by callbacks, especially with 16384 slots + // in Redis.Cluster + pipeline[kCallbacks] = null; // Perform the call pipeline.exec(function (err, results) {