Skip to content

Commit

Permalink
fix: prevent duplicate intervals being set. (#1244)
Browse files Browse the repository at this point in the history
This issue has also been addressed by others in #1232 and #1226.

Closes #1232.

After calling `redis.quit` there are still many open `setInterval` handles that have not been cleared.

These uncleared `setInternal` appear to be because everytime `connect` is called in the `reconnectTimeout` the `this._addedScriptHashesCleanInterval` is overridden but the old one still exists in the background.

https://github.com/luin/ioredis/blob/v4.19.2/lib/cluster/index.ts#L311-L313

When you call `redis.quit` it only clears the current one retained by `this._addedScriptHashesCleanInterval`.

```
[WTF Node?] open handles:
- File descriptors: (note: stdio always exists)
  - fd 1 (tty) (stdio)
  - fd 0 (tty)
  - fd 2 (tty) (stdio)
- Intervals:
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
  - (60000 ~ 60 s) (anonymous) @ /srv/app/node_modules/ioredis/built/redis/index.js:258
```
  • Loading branch information
jshbrntt committed Dec 13, 2020
1 parent a30a2b4 commit 515d9ea
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/cluster/index.ts
Expand Up @@ -185,6 +185,7 @@ class Cluster extends EventEmitter {
return;
}

clearInterval(this._addedScriptHashesCleanInterval);
this._addedScriptHashesCleanInterval = setInterval(() => {
this._addedScriptHashes = {};
}, this.options.maxScriptsCachingTime);
Expand Down
2 changes: 1 addition & 1 deletion lib/redis/index.ts
Expand Up @@ -295,7 +295,7 @@ Redis.prototype.connect = function (callback) {
reject(new Error("Redis is already connecting/connected"));
return;
}

clearInterval(this._addedScriptHashesCleanInterval);
this._addedScriptHashesCleanInterval = setInterval(() => {
this._addedScriptHashes = {};
}, this.options.maxScriptsCachingTime);
Expand Down

0 comments on commit 515d9ea

Please sign in to comment.