Details

    • Type: Task Task
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: EE-2.0.0.GA
    • Fix Version/s: None
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      ICEfaces-EE

      Description


      Livelock is sometimes observed with the following stack trace common:

      com.icesoft.faces.component.panelseries.UISeries.restoreChild(UISeries.java:535)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:473)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:476)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:476)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:476)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:476)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildState(UISeries.java:476)
      com.icesoft.faces.component.panelseries.UISeries.restoreChildrenState(UISeries.java:461)
      com.icesoft.faces.component.panelseries.UISeries.setRowIndex(UISeries.java:137)
      com.icesoft.faces.component.panelseries.UISeries.visitTree(UISeries.java:803)
      javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
      javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
      javax.faces.component.UIForm.visitTree(UIForm.java:344)
      javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
      javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
      com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:280)
      com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:257)
      com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
      com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)

        Activity

        Hide
        Ted Goddard added a comment -

        A patch will be created to make use of a ConcurrentHashMap. This is not to be regarded as a general solution since the root cause is concurrent access to the component tree which will likely cause other data corruption which may or may not be visible.
        The patch will also log the state of the boolean sendDisposeWindow, since this is believed to be the only scenario for concurrent access (a window dispose sent at the same time as a user event being processed).

        Show
        Ted Goddard added a comment - A patch will be created to make use of a ConcurrentHashMap. This is not to be regarded as a general solution since the root cause is concurrent access to the component tree which will likely cause other data corruption which may or may not be visible. The patch will also log the state of the boolean sendDisposeWindow, since this is believed to be the only scenario for concurrent access (a window dispose sent at the same time as a user event being processed).
        Hide
        Ted Goddard added a comment -

        Note that UISeries has a completely different implementation in ICEfaces 3.0. It now inherits from javax.faces.component.html.HtmlDataTable which likely gives a very different visitTree implementation. If there is a thread-safety issue in the specifics of the UISeries implementation in ICEfaces 2, it could easily not be present in ICEfaces 3.

        Show
        Ted Goddard added a comment - Note that UISeries has a completely different implementation in ICEfaces 3.0. It now inherits from javax.faces.component.html.HtmlDataTable which likely gives a very different visitTree implementation. If there is a thread-safety issue in the specifics of the UISeries implementation in ICEfaces 2, it could easily not be present in ICEfaces 3.
        Hide
        Ted Goddard added a comment -

        Since the code in ICEfaces 3 is radically different, this has been applied only to a customer patch on ICEfaces 2.

        Show
        Ted Goddard added a comment - Since the code in ICEfaces 3 is radically different, this has been applied only to a customer patch on ICEfaces 2.

          People

          • Assignee:
            Unassigned
            Reporter:
            Ted Goddard
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: