FLUID-6371: Dynamic components leak options record registered in parent

Metadata

Source
FLUID-6371
Type
Bug
Priority
Major
Status
Closed
Resolution
Fixed
Assignee
Antranig Basman
Reporter
Antranig Basman
Created
2019-03-21T10:50:55.379-0400
Updated
2024-07-19T08:06:14.525-0400
Versions
N/A
Fixed Versions
N/A
Component
  1. Framework

Description

Testing with the GPII cloud-based flow manager at https://issues.gpii.net/browse/GPII-3766 suggested a slow but persistent leak associated with request handling. Investigating with the heap inspector revealed a few pseudo-leaks in fluid.makeInvoker which will leak the most recently used arguments list. These are an annoyance in the heap inspector but not the cause of the true leak since they can't accumulate over time.

However, there is a genuine leak in fluid.registerDynamicRecord - https://github.com/fluid-project/infusion/blob/master/src/framework/core/js/FluidIoC.js#L679 which constructs an entry in the parent's "options.components" record for each contructed dynamic component, which is not cleared up. The heap inspector showed that this will leak 272 bytes per component which is broadly consistent with the observed rate of leakage.

Whilst the options records may be useful for introspection during the lifetime of the component, they should be cleared up on destruction.

Comments