Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-1847

View to be restored was removed and cannot be retrieved from the map (JspStatemanagerImpl)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Duplicate
    • 1.1.6-SNAPSHOT
    • None
    • None
    • None
    • WinXP, Weblogic 9.2

    Description

      Affected version: myfaces-impl-1.1.6-SNAPSHOT.jar

      We have an web application which used myfaces,tomahawk and freemarker. The manin page of the application is been divided into 3 parts (Top Menu links), Tree menu (Left frame) and selected page to be displayed on the right side frame.

      During the module test, we observed that myfaces is creating two serialized views. One for the left side tree2 menu jsf and the other for right side content jsf corresponding to the report item selected. Since the default number of views in the session is 20, myfaces will remove the weak referenced view if the number of views in the session exceeds the threshold. So we have done some regression on the tree menu items which had created more than 20 views. But the wierd thing is, it has removed the serialized view of the tree2 jsf in the mid of regression which was created in the initial stage and supposed to be made available in the map and to be restored when the other report menu items are selected. Due to this bug, our application is displaying the tree2 menu in the right side frame as well. We have to refresh/reload the page to get out of this issue.

      When the other report items are selected, the application is trying to get the view from the serialized map but due to the bug in the code it's unable to find the view which was removed earlier and prints the message

      Exiting restoreTreeStructure - No serialized view found in server session!

      Below is the suspected code snippet from JspStatemanagerImpl$SerializedViewCollection class

      while (_keys.remove(key)) ;
      _keys.add(key);

      int views = getNumberOfViewsInSession(context);

      while (_keys.size() > views) {
      key = _keys.remove(0);//View will be removed here

      Object oldView = _serializedViews.remove(key);

      if (oldView != null)

      { getOldSerializedViewsMap().put(key, oldView); }

      }

      Did anyone ever faced the same issue and managed to fix?

      I hope someone out there might be able to help me out of this issue. I understand that there were some out of memory and perfomance issues in JspStatemanagerImpl of release myfaces-impl-1.1.6-SNAPSHOT which was fixed in myfaces-impl-1.2.X. But to use myfaces-impl-1.2.X, we should run the application in a server which supports JSP 2.1. We are using weblogic 9.2 which has JSP 2.0 container.

      I am currently working on this issue to avoid removing the view which is to be restored later for release myfaces-impl-1.1.6-SNAPSHOT.

      Let me know if further details required.
      Would greatly appreciate if anyone help me out on this.

      Attachments

        Issue Links

          Activity

            People

              lu4242 Leonardo Uribe
              urs_amt Mohamed Thowbick
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

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