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)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: TRINIDAD-816
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-816
             Project: MyFaces Trinidad
          Issue Type: Improvement
          Components: Archetype
         Environment: all
            Reporter: Danny Chen


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




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to