Application of changes by the ChangeManager is extremely slow
-------------------------------------------------------------
Key: TRINIDAD-1356
URL: https://issues.apache.org/jira/browse/TRINIDAD-1356
Project: MyFaces Trinidad
Issue Type: Improvement
Affects Versions: 1.2.10-core
Environment: All
Reporter: Blake Sullivan
Now that the SessionChangeManager applies all of the changes at the end of the
RichDocument's tag processing, change application is extremely slow. This is
because the ChangeManager needs to call invokeOnComponent for each change and
there is no removal of duplicate changes. Since many components add a new
attribute change every time the component is manipulated--splitters, disclosure
components, tables, etc. The SessionChangeManager overhead becomes higher and
higher the more time that the user spends interacting with the page. The
solution is to collapse the most common changes--attribute changes--together to
decrease the number of changes that need to be applied on each request.
(Another fix would be avoiding application of changes where the component state
already includes the change). The complicating factor in collapsing changes is
that the MoveChildComponentChange can cause the clientId of a component to be
modified so that the current clientId of the component doesn't match the
clientId that an earlier change was recorded against. The solution to this
problem is to track the MoveChildComponentChanges and build a mapping table to
Map current clientIds to earlier clientIds as we iterate through the change
list looking for matches.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.