Uploaded image for project: 'MyFaces Trinidad'
  1. MyFaces Trinidad
  2. TRINIDAD-1356

Application of changes by the ChangeManager is extremely slow

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.2.10-core
    • 1.2.11-core
    • None
    • None
    • All

    Description

      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 changesattribute 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.

      Attachments

        1. JIRA_1356_12101_b.patch
          18 kB
          Blake Sullivan

        Activity

          People

            matzew Matthias Wessendorf
            btsulliv Blake Sullivan
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 96h
                96h
                Remaining:
                Remaining Estimate - 96h
                96h
                Logged:
                Time Spent - Not Specified
                Not Specified