In Node.js versions >= 20.x, forking child processes that import the Redis
package while the application operates under the FIFO CPU scheduling policy
causes both parent and child processes to hang indefinitely, consuming 100% CPU.
The issue does not occur if:
The Redis package is not imported.
The application is running under a different CPU scheduling policy.
The application is running on Node.js versions prior to 20.x.
This is reproducible with both redis@4.7.0 and redis@3.1.2.
PS2.: I reckon this may be a Node.js issue specifically, but I'm yet unable to reproduce this without any external dependencies - so I'm opening this issue here first.
Description
In Node.js versions >= 20.x, forking child processes that import the Redis package while the application operates under the FIFO CPU scheduling policy causes both parent and child processes to hang indefinitely, consuming 100% CPU.
The issue does not occur if:
This is reproducible with both redis@4.7.0 and redis@3.1.2.
The following repo has a sample reproducible application: https://github.com/prlanzarin/cp-fork-sample See the README for instructions.
PS.: I quickly poked at redis@3.1.2 and ended up figuring out that commenting the following prototype assignment got the application to stop misbehaving: https://github.com/redis/node-redis/blob/4f85030e42da2eed6a178e54994330af5062761e/lib/commands.js#L59 I've not looked into the equivalent breakpoint in 4.7.0.
PS2.: I reckon this may be a Node.js issue specifically, but I'm yet unable to reproduce this without any external dependencies - so I'm opening this issue here first.
Node.js Version
v22.11.0 (or 20.x)
Redis Server Version
6.0.16 malloc=jemalloc-5.2.1 bits=64
Node Redis Version
redis@4.7.0 (or redis@3.1.2)
Platform
Ubuntu 22.04 (or 20.04)
Logs
No response