ICEpush
  1. ICEpush
  2. PUSH-230

Multiple PushID instances accumulate in 'ice.pushids' cookie

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.3
    • Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
    • Component/s: JavaScript Client
    • Labels:
      None
    • Environment:
      ICEpush
    • Assignee Priority:
      P1

      Description

      There are cases where pushIDs are not cleaned up, possibly due to browser bugs. A different strategy could yield accurate cleanup even under poor browser behavior.

        Activity

        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Ken Fyten made changes -
        Fix Version/s 4.0 [ 11383 ]
        Ted Goddard made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Ted Goddard added a comment -

        This issue is not being reopened since it is "fixed" in EE 3.3. A clone will be created for the general cleanup strategy.

        Show
        Ted Goddard added a comment - This issue is not being reopened since it is "fixed" in EE 3.3. A clone will be created for the general cleanup strategy.
        Ted Goddard made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Assignee Mircea Toma [ mircea.toma ] Ted Goddard [ ted.goddard ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #35895 Tue Jun 04 16:38:32 MDT 2013 mircea.toma PUSH-230 Revert previous commit.
        Files Changed
        Commit graph MODIFY /projects/bridge-support/src/main/javascript/cookie.js
        Commit graph MODIFY /projects/bridge-support/src/main/javascript/collection.js
        Mircea Toma made changes -
        Summary PushID liveness detection for accurate cleanup Multiple PushID instances accumulate in 'ice.pushids' cookie
        Hide
        Mircea Toma added a comment -

        A simple fix was applied to make sure that only one instance of a pushID will show up in the list of IDs kept by 'ice.pushids' cookie.

        Show
        Mircea Toma added a comment - A simple fix was applied to make sure that only one instance of a pushID will show up in the list of IDs kept by 'ice.pushids' cookie.
        Hide
        Mircea Toma added a comment -

        The mechanism described in previous comment was removed from the bridge. The way it used to work would have invalidated any notifications that occur less often than the pushID expiration interval.

        Show
        Mircea Toma added a comment - The mechanism described in previous comment was removed from the bridge. The way it used to work would have invalidated any notifications that occur less often than the pushID expiration interval.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #35885 Tue Jun 04 15:28:13 MDT 2013 mircea.toma PUSH-230 Make sure no duplicates will show up in the list of pushIds saved in 'ice.pushids' cookie.
        Files Changed
        Commit graph MODIFY /icepush/trunk/icepush/core/src/main/javascript/application.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #35884 Tue Jun 04 15:24:34 MDT 2013 mircea.toma PUSH-230 Revert previous commit.
        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
        Commit graph MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/ConfigurationServer.java
        Ken Fyten made changes -
        Fix Version/s 3.4 [ 10971 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #35878 Tue Jun 04 13:47:13 MDT 2013 mircea.toma PUSH-230 Introduced mechanism for expiring PushIds on the client to avoid ID acumulation when they are not properly deregistered. The bridge now keeps track of the last time a pushID notification was received, if after a certain interval (configured through org.icepush.pushIdTimeout context parameter) no more notifications were received for this ID then it is discarded.
        Files Changed
        Commit graph MODIFY /projects/bridge-support/src/main/javascript/cookie.js
        Commit graph MODIFY /projects/bridge-support/src/main/javascript/collection.js
        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
        Commit graph MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/ConfigurationServer.java
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        Mircea Toma added a comment -

        Introduced mechanism for expiring PushIds on the client to avoid ID acumulation when they are not properly deregistered. The bridge now keeps track of the last time a pushID notification was received, if after a certain interval (configured through org.icepush.pushIdTimeout context parameter, used on the server side as well) no more notifications were received for this ID then it is discarded.

        Show
        Mircea Toma added a comment - Introduced mechanism for expiring PushIds on the client to avoid ID acumulation when they are not properly deregistered. The bridge now keeps track of the last time a pushID notification was received, if after a certain interval (configured through org.icepush.pushIdTimeout context parameter, used on the server side as well) no more notifications were received for this ID then it is discarded.
        Ken Fyten made changes -
        Assignee Priority P1 [ 10010 ]
        Ted Goddard made changes -
        Assignee Mircea Toma [ mircea.toma ]
        Ted Goddard made changes -
        Field Original Value New Value
        Fix Version/s EE-3.3.0.GA [ 10575 ]
        Hide
        Ted Goddard added a comment -

        It is likely necessary to define a new mechanism for clearing unused pushIDs. Disabling cleanup during onUnload allows push to continue functioning after the video is played, but it also results in an accumulation of old pushIDs. However, there are other cases where unused pushIDs accumulate, so an improved cleanup mechanism should be investigated.

        Each browser window/tab has a set of pushIDs with active listeners. When a listen.icepush returns with a set of notifications, these need to be dispatched to the various browser windows via two mechanisms: local storage events and cookie polling. When a notification occurs (including a noop) each pushID in each window can have an associated timestamp so that the listening window can determine if a given pushID is still active. pushIDs with very old associated timestamps can be garbage collected.

        (copied from MOBI-193)

        Show
        Ted Goddard added a comment - It is likely necessary to define a new mechanism for clearing unused pushIDs. Disabling cleanup during onUnload allows push to continue functioning after the video is played, but it also results in an accumulation of old pushIDs. However, there are other cases where unused pushIDs accumulate, so an improved cleanup mechanism should be investigated. Each browser window/tab has a set of pushIDs with active listeners. When a listen.icepush returns with a set of notifications, these need to be dispatched to the various browser windows via two mechanisms: local storage events and cookie polling. When a notification occurs (including a noop) each pushID in each window can have an associated timestamp so that the listening window can determine if a given pushID is still active. pushIDs with very old associated timestamps can be garbage collected. (copied from MOBI-193 )
        Ted Goddard created issue -

          People

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

            Dates

            • Created:
              Updated:
              Resolved: