ICEfaces
  1. ICEfaces
  2. ICE-3578

PersistentFacesState.render guarding against re-entrancy

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 1.7.1
    • Fix Version/s: 2.0-Alpha3, 2.0.0
    • Component/s: None
    • Labels:
      None
    • Environment:
      ICEfaces

      Description

      If PersistentFacesState.render() is called for the current PersistentFacesState, and attempt is made to render the current view being rendered. This should be detected and the method simply return.

        Activity

        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17663 Mon Sep 29 14:57:10 MDT 2008 ted.goddard guard against render reentrancy (ICE-3578)
        Files Changed
        Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17664 Mon Sep 29 15:02:29 MDT 2008 ted.goddard guard against render reentrancy (ICE-3578)
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Ted Goddard created issue -
        Ted Goddard made changes -
        Field Original Value New Value
        Fix Version/s 1.7.2 [ 10130 ]
        Ted Goddard made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17671 Mon Sep 29 17:09:17 MDT 2008 deryk.sinotte ICE-3578: backing out changes
        Files Changed
        Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17673 Tue Sep 30 08:21:30 MDT 2008 ted.goddard guard against render reentrancy (ICE-3578)
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17674 Tue Sep 30 09:13:03 MDT 2008 ted.goddard removed guard for execute reentrancy (ICE-3578)
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Hide
        Ken Fyten added a comment -

        Commit caused all push operations to fail. Backed out. This needs to be revisited for 1.8.

        Show
        Ken Fyten added a comment - Commit caused all push operations to fail. Backed out. This needs to be revisited for 1.8.
        Ken Fyten made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Assignee Ted Goddard [ ted.goddard ]
        Hide
        Ken Fyten added a comment -

        Commit was backed out on the icefaces-1.7 branch (r17671).

        Show
        Ken Fyten added a comment - Commit was backed out on the icefaces-1.7 branch (r17671).
        Ken Fyten made changes -
        Fix Version/s 1.8DR#2 [ 10142 ]
        Fix Version/s 1.7.2 [ 10130 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #17678 Wed Oct 01 08:47:57 MDT 2008 ted.goddard completely backing out reentrancy guard (ICE-3578)
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/xmlhttp/PersistentFacesState.java
        Hide
        Ted Goddard added a comment -

        Mircea has an improved implementation of this fix:

        public void executeAndRender() throws RenderingException

        { if (!lifecycleLock.isHeldByCurrentThread()) return; acquireLifecycleLock(); execute(); render(); }

        However the renderLater() call is intended to resolve this explicitly. One complication of the earlier change for this feature is that an application-managed thread pool calling render() might have these calls rejected due to the Thread inheritance of the PersistentFacesState instance. The above implementation would likely resolve this, but it is more straightforward to request that applications switch to SessionRenderer, RenderManager, or the renderLater() call.

        Show
        Ted Goddard added a comment - Mircea has an improved implementation of this fix: public void executeAndRender() throws RenderingException { if (!lifecycleLock.isHeldByCurrentThread()) return; acquireLifecycleLock(); execute(); render(); } However the renderLater() call is intended to resolve this explicitly. One complication of the earlier change for this feature is that an application-managed thread pool calling render() might have these calls rejected due to the Thread inheritance of the PersistentFacesState instance. The above implementation would likely resolve this, but it is more straightforward to request that applications switch to SessionRenderer, RenderManager, or the renderLater() call.
        Ted Goddard made changes -
        Status Reopened [ 4 ] Closed [ 6 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Resolution Fixed [ 1 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Ken Fyten made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Ted Goddard added a comment -

        Re-entrancy is a general problem for a push API , so this should be considered for 2.0 or 1.8DR3.

        Show
        Ted Goddard added a comment - Re-entrancy is a general problem for a push API , so this should be considered for 2.0 or 1.8DR3.
        Ted Goddard made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Ted Goddard made changes -
        Salesforce Case []
        Fix Version/s 2.0 [ 10032 ]
        Fix Version/s 1.8DR#2 [ 10142 ]
        Hide
        Ted Goddard added a comment -

        ICEfaces 2.0 uses client-initiated rendering driven by a server notification, so re-entrancy is not possible. It is likely not necessary to fix this in ICEfaces 1.8.x since a re-entrant condition is an application design problem and new application design should be taking place for ICEfaces 2.0.

        Show
        Ted Goddard added a comment - ICEfaces 2.0 uses client-initiated rendering driven by a server notification, so re-entrancy is not possible. It is likely not necessary to fix this in ICEfaces 1.8.x since a re-entrant condition is an application design problem and new application design should be taking place for ICEfaces 2.0.
        Ted Goddard made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Won't Fix [ 2 ]
        Ken Fyten made changes -
        Fix Version/s 2.0.0 [ 10230 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved: