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

        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.
        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.
        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.
        Hide
        Mircea Toma added a comment -

        Backported fix.

        Show
        Mircea Toma added a comment - Backported fix.
        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.

          People

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

            Dates

            • Created:
              Updated:
              Resolved: