ICEfaces
  1. ICEfaces
  2. ICE-4396

Timing issue between removal of ice.session from cookie and shutting down bridge

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8
    • Fix Version/s: 1.8.1
    • Component/s: Bridge, Framework
    • Labels:
      None
    • Environment:
      Oracle/BEA WebLogic Server 10.3 Cluster, ICEfaces 1.8.0

      Description

      Using a cluster of WebLogic Servers, fail-over seems to cause the old bridge instance not to shutdown properly causing an excessive amount of receive-updated-views requests not containing the ice.session.

        Activity

        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #18916 Fri May 22 11:35:08 MDT 2009 deryk.sinotte ICE-4396: Reduce logging level to avoid unnecessarily logging of low-impact event (missing ice.session)
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/core/RequestVerifier.java
        Deryk Sinotte made changes -
        Summary Old Bridge instance not shutdown properly during fail-over. Timing issue between removal of ice.session from cookie and shutting down bridge
        Salesforce Case []
        Hide
        Deryk Sinotte added a comment -

        Prior to ICEfaces 1.8, the list of ice.session values was stored in a JavaScript global window variable. New ice.session values would be added when a new view was loaded and automatically cleaned up when the window closed. These values are now stored in a cookie. This allows the values to be shared across all the windows/tabs for a given domain, but it also requires that we manually manage the loading and removal of values - when all the views for a particular ice.session are gone, the ice.session value is removed.

        The problem in ICEfaces 1.8.0 is that the code to remove the ice.session values from the cookie executes before the page is fully unloaded. This results in a potential timing issue where a reload (e.g. caused by an attempt to failover to a different node in a cluster) causes the ice.session value to be removed but the blocking connection (used for Ajax Push) still attempts to re-establish itself without a valid ice.session being available. Continued and repeated attempts are made by the blocking connection until the page reload occurs and before the ICEfaces bridge is completely shut down, resulting in the noted error messages.

        The effect in the browser can be fairly innocuous depending on the number of attempts made to re-establish the blocking connection and the time it takes for the page reload to shut down the bridge and reload the page. However, if many attempts are made, then the browser may appear unresponsive for an indeterminant amount of time.

        The problem has been solved in the upcoming ICEfaces 1.8.1 by shutting down the bridge earlier, so that the blocking connection never attempts to re-establish contact without a valid ice.session value in the cookie.

        Show
        Deryk Sinotte added a comment - Prior to ICEfaces 1.8, the list of ice.session values was stored in a JavaScript global window variable. New ice.session values would be added when a new view was loaded and automatically cleaned up when the window closed. These values are now stored in a cookie. This allows the values to be shared across all the windows/tabs for a given domain, but it also requires that we manually manage the loading and removal of values - when all the views for a particular ice.session are gone, the ice.session value is removed. The problem in ICEfaces 1.8.0 is that the code to remove the ice.session values from the cookie executes before the page is fully unloaded. This results in a potential timing issue where a reload (e.g. caused by an attempt to failover to a different node in a cluster) causes the ice.session value to be removed but the blocking connection (used for Ajax Push) still attempts to re-establish itself without a valid ice.session being available. Continued and repeated attempts are made by the blocking connection until the page reload occurs and before the ICEfaces bridge is completely shut down, resulting in the noted error messages. The effect in the browser can be fairly innocuous depending on the number of attempts made to re-establish the blocking connection and the time it takes for the page reload to shut down the bridge and reload the page. However, if many attempts are made, then the browser may appear unresponsive for an indeterminant amount of time. The problem has been solved in the upcoming ICEfaces 1.8.1 by shutting down the bridge earlier, so that the blocking connection never attempts to re-establish contact without a valid ice.session value in the cookie.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Mircea Toma added a comment -

        Shutdown bridge as soon as 'reload' command is received to avoid having a blocking connection running with no participating session ID.

        Show
        Mircea Toma added a comment - Shutdown bridge as soon as 'reload' command is received to avoid having a blocking connection running with no participating session ID.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #18800 Fri Apr 24 10:42:41 MDT 2009 mircea.toma ICE-4396 Shutdown bridge as soon as 'reload' command is received.
        Files Changed
        Commit graph MODIFY /icefaces/trunk/icefaces/bridge/src/application.js
        Hide
        Ken Fyten added a comment -

        Need to verify this change using all use-cases that can result in the bridge triggering a "reload", such as reload navigation.

        Show
        Ken Fyten added a comment - Need to verify this change using all use-cases that can result in the bridge triggering a "reload", such as reload navigation.
        Jack Van Ooststroom made changes -
        Assignee Mircea Toma [ mircea.toma ]
        Hide
        Jack Van Ooststroom added a comment -

        Assigning to Mircea...

        Show
        Jack Van Ooststroom added a comment - Assigning to Mircea...
        Jack Van Ooststroom made changes -
        Field Original Value New Value
        Salesforce Case []
        Fix Version/s 1.8.1 [ 10170 ]
        Hide
        Jack Van Ooststroom added a comment -

        Changed Fix Version(s) to 1.8.1

        Show
        Jack Van Ooststroom added a comment - Changed Fix Version(s) to 1.8.1
        Jack Van Ooststroom created issue -

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Jack Van Ooststroom
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: