Description:
The VDomUpdate manager handles merging child component updates into parent updates to reduce IPC traffic.
Currently, getMergedChildIds(ownerId) only retrieves the direct children merged into the owner.
Problem:
If we have a nested merge scenario:
- Grandchild updates -> Merges into Child.
- Child updates -> Merges into Parent.
When Parent updates, getMergedChildIds(Parent) only returns Child.
TreeBuilder (running for Parent) sees Child as dirty and expands it.
However, when TreeBuilder recurses to Child, it checks if Grandchild is in the mergedChildIds set (Parent's set).
It is missing.
Therefore, TreeBuilder treats Grandchild as clean and prunes it (sends a placeholder), even though Grandchild has pending updates.
Result:
Deeply nested updates can be lost or incorrectly pruned during a merged update cycle.
Proposed Fix:
Update Neo.manager.VDomUpdate.getMergedChildIds to recursively traverse the mergedCallbackMap.
If a merged child (Child) is itself an owner of updates (Grandchild), those grandchildren IDs must also be added to the returned set.
Related Files:
src/manager/VDomUpdate.mjs
Description: The
VDomUpdatemanager handles merging child component updates into parent updates to reduce IPC traffic. Currently,getMergedChildIds(ownerId)only retrieves the direct children merged into the owner.Problem: If we have a nested merge scenario:
When
Parentupdates,getMergedChildIds(Parent)only returnsChild.TreeBuilder(running for Parent) seesChildas dirty and expands it. However, whenTreeBuilderrecurses toChild, it checks ifGrandchildis in themergedChildIdsset (Parent's set). It is missing. Therefore,TreeBuildertreatsGrandchildas clean and prunes it (sends a placeholder), even thoughGrandchildhas pending updates.Result: Deeply nested updates can be lost or incorrectly pruned during a merged update cycle.
Proposed Fix: Update
Neo.manager.VDomUpdate.getMergedChildIdsto recursively traverse themergedCallbackMap. If a merged child (Child) is itself an owner of updates (Grandchild), those grandchildren IDs must also be added to the returned set.Related Files:
src/manager/VDomUpdate.mjs