ICEpush
  1. ICEpush
  2. PUSH-375

heartbeat updates returning as closed/duplicate after navigation

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P03
    • Fix Version/s: EE-3.3.0.GA_P04
    • Component/s: Push Library
    • Labels:
      None
    • Environment:
      ICEpush EE
    • Assignee Priority:
      P1
    • Support Case References:
    • Workaround Exists:
      Yes
    • Workaround Description:
      Hide
      Set the com.icesoft.icepush.maxHeartbeatInterval so that it does not go over 20 seconds:
          <context-param>
              <param-name>com.icesoft.icepush.maxHeartbeatInterval</param-name>
              <param-value>15000</param-value>
          </context-param>
      Show
      Set the com.icesoft.icepush.maxHeartbeatInterval so that it does not go over 20 seconds:     <context-param>         <param-name>com.icesoft.icepush.maxHeartbeatInterval</param-name>         <param-value>15000</param-value>     </context-param>

      Description

      When the adaptive heartbeat goes over 20 seconds and application navigation occurs, the next heartbeat updates return with:
      X-connection-reason: duplicate
      X-connection: closed

      This is causing the connection to fail. After 3 retries if the connection is not reestablished the NCI pop is shown.

      This seems to only happen once the heartbeat interval is over 20 seconds. If the navigation happens before it gets to 20 seconds, the duplicate updates are not seen.

        Activity

        Hide
        Arran Mccullough added a comment -

        Attached test case that shows this issue.

        Steps:

        • Loaded the first page (welcomeICEfaces.jsf) of the app and opened a dev console on the Network tab to monitor the heartbeat.
        • Let the page sit idle while the heartbeat interval went above 20 seconds.
        • After it was over 20 seconds, I clicked a button which navigated to the other page.
        • The first heartbeat interval would return with the X-connection-reason set to ‘duplicate’
        • The next ones would also return the same until the connection was lost (3 retries).
        • In some cases I did see it recover after the second re-connect. Also in some cases I didn't get an NCI but the console reported the connection as being lost and bridge was shut down.
        Show
        Arran Mccullough added a comment - Attached test case that shows this issue. Steps: Loaded the first page (welcomeICEfaces.jsf) of the app and opened a dev console on the Network tab to monitor the heartbeat. Let the page sit idle while the heartbeat interval went above 20 seconds. After it was over 20 seconds, I clicked a button which navigated to the other page. The first heartbeat interval would return with the X-connection-reason set to ‘duplicate’ The next ones would also return the same until the connection was lost (3 retries). In some cases I did see it recover after the second re-connect. Also in some cases I didn't get an NCI but the console reported the connection as being lost and bridge was shut down.
        Hide
        Jack Van Ooststroom added a comment -

        Assigning to Mircea

        Show
        Jack Van Ooststroom added a comment - Assigning to Mircea
        Hide
        Mircea Toma added a comment -

        Modified ICEpush server side code to propagate the currently picked heartbeat timeout value to the reloaded or navigated to page.

        Show
        Mircea Toma added a comment - Modified ICEpush server side code to propagate the currently picked heartbeat timeout value to the reloaded or navigated to page.
        Hide
        Mircea Toma added a comment -

        This was already solved for ICEfaces4 by ICE-9689 fixes.

        Show
        Mircea Toma added a comment - This was already solved for ICEfaces4 by ICE-9689 fixes.
        Hide
        Mircea Toma added a comment -

        Modified bridge to share the blocking connection sequence number and also preserve it in between page reloads. This ensures that the heartbeat interval will not drop on page reload or blocking connection switching to a different window.

        Show
        Mircea Toma added a comment - Modified bridge to share the blocking connection sequence number and also preserve it in between page reloads. This ensures that the heartbeat interval will not drop on page reload or blocking connection switching to a different window.

          People

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

            Dates

            • Created:
              Updated:
              Resolved: