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

Externalizing the ViewCache (currently the view cache is stored in the http session, this enhancement to to add an option to the framework to move the view cache to some other external cache system)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Patch Available
    • Major
    • Resolution: Unresolved
    • None
    • None
    • Archetype
    • None
    • all

    Description

      From email:
      **************************
      We like to propose an enhancement to how and where Trinidad maintains its view caches. Currently when the system is configured to use token as the state persistent method, Trinidad will maintain all component states in a ViewCache. This ViewCache is just a map that is maintained in the HttpSession. Each page has its own View Cache map. There could be a number of ViewCaches stored in a session if multiple frames are being used (which we have). During performance testing of our app, we find that this view cache consumes a lot of memory. More then 60% of the session memory is occupied by the View Cache. With more then 600k in session memory, we can't ensure fail over work appropriately and consistently. We tried to use the "all" option for client _state_method. But the increase in download time is outside of our max threshold.

      After looking through the Trinidad code, we come up with a design to move the view caches outside of the session and maintain them in a configurable cache. The benefit of this solution is the fact the ViewCache is not in the session. Thus, we don't have to replicate them even if we turn on session replication. In the case of session fail over, the user would see the pages refresh. The user would have to hit submit again to move on to the next. Which cache implementation to use, which cache region to use and what the expiration is can be configurable through xml. All these logic is controlled by a new option (token_external_cache) in CLIENT_STATE_METHOD. These changes should be very isolate. We will make most of the changes in org.apache.myfaces.trinidadinternal.application.State. This class is where the ViewCache is created and used. We would also introduce a new class similar to org.apache.myfaces.trinidadinternal.util.TokenCache, call it TokenExternalCache. TokenExternalCache will contain all integration logics to add/update/read data from the configured cache. If application view cache is enabled, none of these logics will get executed.

      We don't' foresee any major difficulty in implementing this solution. And we don't foresee any side effort as well. Please let us know what Trinidad community think. More importantly please let us know if the Trinidad community is welling to accept this solution and get it integrated in a future release or not.

      ********
      for more info, refer to 11/2007 developer mailing list.

      Attachments

        1. TRINIDAD-816-ReadMe.txt
          2 kB
          Danny Chen
        2. TRINIDAD-816-patch.txt
          24 kB
          Danny Chen

        Issue Links

          Activity

            People

              Unassigned Unassigned
              yaoning Danny Chen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: