ICEfaces
  1. ICEfaces
  2. ICE-5184

transient push failure in portal environment

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2
    • Fix Version/s: 1.8.3, 1.8.2-EE-GA_P02
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces, Liferay

      Description


      Occasionally push events will fail to be delivered. SessionRenderer.render() is known to be called but the session appears to be no longer in the group.

      This is believed to be due to the WeakReference referring to the sesionID in GroupAsyncRenderer:

                  if (!contains(object)) {
                      if (group.add(new WeakReference(object))) {


      it is not necessary to retain the sessionID String with only a WeakReference, unlike the previous implementation where a reference to the session object was maintained.

        Issue Links

          Activity

          Ted Goddard created issue -
          Hide
          Ted Goddard added a comment -

          Assigning to Deryk for dispatch. Micha will potentially provide a test case.

          Show
          Ted Goddard added a comment - Assigning to Deryk for dispatch. Micha will potentially provide a test case.
          Ted Goddard made changes -
          Field Original Value New Value
          Assignee Deryk Sinotte [ deryk.sinotte ]
          Hide
          Ted Goddard added a comment -

          This bug does not seem to appear in applications that are using the Renderable API (thereby avoiding the weak reference to the sessionID).

          Show
          Ted Goddard added a comment - This bug does not seem to appear in applications that are using the Renderable API (thereby avoiding the weak reference to the sessionID).
          Hide
          Micha Kiener added a comment -

          This is my assumption:

          • Whenever the session is decorated (a lot of frameworks do that), what is added as a WeakReference within the GroupAsyncRenderer's add(Object) method is not the "real" session object but rather the wrapped one which is thrown away and hence becomes weakly reachable and might be removed by the house-keeping mechanism within the GroupAsyncRenderer.

          This might be an explanation why push is not working from time to time and a well know workaround is to add the session to a render group more frequently.

          Show
          Micha Kiener added a comment - This is my assumption: Whenever the session is decorated (a lot of frameworks do that), what is added as a WeakReference within the GroupAsyncRenderer's add(Object) method is not the "real" session object but rather the wrapped one which is thrown away and hence becomes weakly reachable and might be removed by the house-keeping mechanism within the GroupAsyncRenderer. This might be an explanation why push is not working from time to time and a well know workaround is to add the session to a render group more frequently.
          Hide
          Deryk Sinotte added a comment -

          As Ted notes, now that we've moved away from relying on sessions and now use session ids, we likely don't require wrapping the key in a WeakReference any longer as it would potentially cause the noted problem if the key itself does not live as long as the session.

          Show
          Deryk Sinotte added a comment - As Ted notes, now that we've moved away from relying on sessions and now use session ids, we likely don't require wrapping the key in a WeakReference any longer as it would potentially cause the noted problem if the key itself does not live as long as the session.
          Deryk Sinotte made changes -
          Salesforce Case []
          Fix Version/s 1.8.2-EE-GA_P01 [ 10220 ]
          Fix Version/s 1.8.3 [ 10211 ]
          Hide
          Ted Goddard added a comment -

          Micha, please let us know whether the code change of removing the WeakReference resolves the problem in your application.

          Show
          Ted Goddard added a comment - Micha, please let us know whether the code change of removing the WeakReference resolves the problem in your application.
          Hide
          Ken Fyten added a comment -

          ...or attach a test-case that can be used to reproduce the issue and verify the fix.

          Show
          Ken Fyten added a comment - ...or attach a test-case that can be used to reproduce the issue and verify the fix.
          Ken Fyten made changes -
          Salesforce Case []
          Fix Version/s 1.8.3 [ 10211 ]
          Fix Version/s 1.8.2-EE-GA_P01 [ 10220 ]
          Hide
          Ken Fyten added a comment -

          Cannot pursue this issue without a test case.

          Show
          Ken Fyten added a comment - Cannot pursue this issue without a test case.
          Ken Fyten made changes -
          Status Open [ 1 ] Closed [ 6 ]
          Resolution Incomplete [ 4 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #21174 Wed Apr 07 14:49:28 MDT 2010 deryk.sinotte ICE-5184: remove WeakReferences wrappers from session ids so that render groups members are not garbage collected inadvertently
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/async/render/GroupAsyncRenderer.java
          Deryk Sinotte made changes -
          Link This issue is duplicated by ICE-4434 [ ICE-4434 ]
          Hide
          Deryk Sinotte added a comment -

          Re-opening to apply fix.

          Show
          Deryk Sinotte added a comment - Re-opening to apply fix.
          Deryk Sinotte made changes -
          Resolution Incomplete [ 4 ]
          Status Closed [ 6 ] Reopened [ 4 ]
          Deryk Sinotte made changes -
          ICEsoft Forum Reference http://www.icefaces.org/JForum/posts/list/15299.page
          Salesforce Case [5007000000Ap1Nr]
          Hide
          Deryk Sinotte added a comment -

          Applying modified version of the fix that was sent to support customer.

          Show
          Deryk Sinotte added a comment - Applying modified version of the fix that was sent to support customer.
          Deryk Sinotte made changes -
          Fix Version/s 1.8.2-EE-GA_P02 [ 10226 ]
          Fix Version/s 1.8.3 [ 10211 ]
          Deryk Sinotte made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Assignee Deryk Sinotte [ deryk.sinotte ]
          Ken Fyten made changes -
          Resolution Fixed [ 1 ]
          Status Closed [ 6 ] Reopened [ 4 ]
          Assignee Priority P1
          Ken Fyten made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Assignee Priority P1
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

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

              Dates

              • Created:
                Updated:
                Resolved: