Description
openedon Mar 20, 2024
An issue has been identified with the tracking the removal of all events, timers and config tracking functions where an excessive number of unload
hooks can accumulate in long running applications.
The primary identified culprit is that the getPerfMgr()
function will ALWAYS add a new unload hook whenever no performance manager currently exists (either explicitly or via create perf manager config function) -- which is the default situation, and when called multiple times without any of the configuration they keep accumulating. The object created and stored is not large, so it takes quite a while (or a lot of events) for the problem to become visible.
And as part of our performance testing (to track for excessive memory usage), we actually "install" a performance manager -- which doesn't catch this edge case...
The identified getPerfMgr()
case only exists in v3.x and was introduced as part of the dynamic configuration support as the watcher being accumulated is the configuration watcher to "handle" configuration changes.
This Issue affects the following versions
- 3.0.0 -> 3.0.8
- 3.1.0 -> 3.1.1
We will be publishing both a 3.0.9 and a 3.1.2 with a fix for this issue.