ICEfaces
  1. ICEfaces
  2. ICE-9675

Asynchronous push notification lost when opening and closing a new browser window

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P01
    • Fix Version/s: 4.0.BETA, EE-3.3.0.GA_P02, 4.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEpush
    • Assignee Priority:
      P1
    • Salesforce Case Reference:

      Description

      We have a link on a page that, when clicked, opens a JSF view in a new browser window using a Javascript window.open() call. On this new page we have a button that updates a value in our model, triggers an asynchronous render on our main page and closes this new page that was opened.

      If the button on the new page is clicked straight after the browser window is opened (within a second or two) the notification of the asynchronous push gets lost and the main page is never re-rendered. If you wait a few seconds before clicking the button the async push is always successful.

        Activity

        Arran Mccullough created issue -
        Hide
        Arran Mccullough added a comment -

        Attached test case provided that reproduces this issue.

        Steps to reproduce in the attached sample:
        1) Click on Open New Window link -> second browser window will open.
        2) Click on the Close Window button within a second of opening the window.
        3) The window will close and the main page will not be updated. A line with text "Async render 1 complete" should have appeared on the main page.

        Show
        Arran Mccullough added a comment - Attached test case provided that reproduces this issue. Steps to reproduce in the attached sample: 1) Click on Open New Window link -> second browser window will open. 2) Click on the Close Window button within a second of opening the window. 3) The window will close and the main page will not be updated. A line with text "Async render 1 complete" should have appeared on the main page.
        Arran Mccullough made changes -
        Field Original Value New Value
        Attachment asyncLost.zip [ 16556 ]
        Arran Mccullough made changes -
        Salesforce Case Reference 5007000000XQgVyAAL
        Ken Fyten made changes -
        Assignee Judy Guglielmin [ judy.guglielmin ]
        Fix Version/s EE-3.3.0.GA_P02 [ 11371 ]
        Assignee Priority P1 [ 10010 ]
        Judy Guglielmin made changes -
        Assignee Judy Guglielmin [ judy.guglielmin ] Mircea Toma [ mircea.toma ]
        Hide
        Mircea Toma added a comment -

        The notification triggered by the "Close Window" button is lost while the blocking connection previously owned by the popup windows is transferred back to the main window. The ICEpush bridge in the popup window monitors the liveliness of the blocking connection by pooling every 1000ms. This is why when the user clicks right away "Close Window" the notification gets lots, because there is not blocking connection running yet that would receive the notification.

        Show
        Mircea Toma added a comment - The notification triggered by the "Close Window" button is lost while the blocking connection previously owned by the popup windows is transferred back to the main window. The ICEpush bridge in the popup window monitors the liveliness of the blocking connection by pooling every 1000ms. This is why when the user clicks right away "Close Window" the notification gets lots, because there is not blocking connection running yet that would receive the notification.
        Hide
        Mircea Toma added a comment -

        The best solution for this issue would be to introduce a new API in the ICEpush bridge that can be used to have the ICEpush user notified when the blocking connection is re-established (transferred). This way ICEfaces can retrieve the pending updates triggered while no blocking connection is on.

        Show
        Mircea Toma added a comment - The best solution for this issue would be to introduce a new API in the ICEpush bridge that can be used to have the ICEpush user notified when the blocking connection is re-established (transferred). This way ICEfaces can retrieve the pending updates triggered while no blocking connection is on.
        Ken Fyten made changes -
        Fix Version/s 4.0 [ 10770 ]
        Hide
        Mircea Toma added a comment -

        Introduced ice.onBlockingConnectionReEstablished function in ICEpush bridge to allow registration of callbacks interested in connection re/establishment (such as when blocking connection moves from one window to another).

        Show
        Mircea Toma added a comment - Introduced ice.onBlockingConnectionReEstablished function in ICEpush bridge to allow registration of callbacks interested in connection re/establishment (such as when blocking connection moves from one window to another).
        Hide
        Mircea Toma added a comment -

        Modified bridge to retrieve updates that are potentially pending while ICEpush connection is re-established.

        Show
        Mircea Toma added a comment - Modified bridge to retrieve updates that are potentially pending while ICEpush connection is re-established.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #38847 Thu Nov 21 10:44:51 MST 2013 mircea.toma ICE-9675 Introduced ice.onBlockingConnectionReEstablished function to allow registration of callbacks interested in connection re/establishment (such as when blocking connection moves from one window to another).
        Files Changed
        Commit graph MODIFY /icepush/trunk/icepush/core/src/main/javascript/application.js
        Commit graph MODIFY /icepush/trunk/icepush/core/src/main/javascript/connection.async.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #38849 Thu Nov 21 10:47:13 MST 2013 mircea.toma ICE-9675 Modified bridge to retrieve updates that are potentially pending while ICEpush connection is re-established.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/core/src/main/javascript/application.js
        Hide
        Mircea Toma added a comment -

        Backported fix.

        Show
        Mircea Toma added a comment - Backported fix.
        Ken Fyten made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Hide
        Mircea Toma added a comment -

        Applied patch to icepush-core-ee-3.3.0.GA-maintenance tag and removed it from icepush-core-ee-3.3.0.GA_P01.

        Show
        Mircea Toma added a comment - Applied patch to icepush-core-ee-3.3.0.GA-maintenance tag and removed it from icepush-core-ee-3.3.0.GA_P01.
        Mircea Toma made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Fix Version/s 4.0 [ 11382 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Arran Mccullough
          • Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: