A number of debug logging statements were added to try and narrow down when and why the updates stopped. Here's a subset of that logging that shows what happens in the case of one browser where the clocks stopped ticking after a few minutes:
//Push group is created
Jan 20, 2010 11:30:45 AM org.icepush.PushContext$Group <init>
FINEST: '3B938F0B693880AC6FDA99BBBCEB9160' push group created.
//Push ID is added to the group
Jan 20, 2010 11:30:45 AM org.icepush.PushContext addGroupMember
FINEST: Added pushId '1264015845649' to group '3B938F0B693880AC6FDA99BBBCEB9160'.
//The final time that the lastAccess time is updated for this id. The lastAccess time should be updated every 3 seconds or so provided //there are incoming requests from the client containing the required id.
Jan 20, 2010 11:32:40 AM org.icepush.PushContext$Group touchIfMatching
FINEST: lastAccess updated for 1264015845649
//The last time a successful notification is sent for this push id.
Jan 20, 2010 11:34:41 AM org.icepush.BlockingConnectionServer$4 writeTo
FINEST: Sending notifications for [1264015845649].
//Then the group is discard due to expiration, exactly 2 minutes after final lastAccess update.
Jan 20, 2010 11:34:41 AM org.icepush.PushContext$Group discardIfExpired
FINEST: '3B938F0B693880AC6FDA99BBBCEB9160' push group expired.
//Continue to get these for that same group every 1 second. However, nothing is sent since the group has expired.
Jan 20, 2010 11:35:59 AM org.icepush.PushContext push
FINEST: Push notification triggered for '3B938F0B693880AC6FDA99BBBCEB9160' pushId.
So it appears that the mechanism used to update the lastAccess time is not working. As more browser instances are added, it seems the more time elapses between successful updates. When the period gets longer than 2 minutes, the group is expired/discarded and the updates are no longer sent. The client, however, appears to be still be sending the appropriate requests so it would seem that there is something on the server side that isn't quite behaving.
A number of debug logging statements were added to try and narrow down when and why the updates stopped. Here's a subset of that logging that shows what happens in the case of one browser where the clocks stopped ticking after a few minutes:
//Push group is created
Jan 20, 2010 11:30:45 AM org.icepush.PushContext$Group <init>
FINEST: '3B938F0B693880AC6FDA99BBBCEB9160' push group created.
//Push ID is added to the group
Jan 20, 2010 11:30:45 AM org.icepush.PushContext addGroupMember
FINEST: Added pushId '1264015845649' to group '3B938F0B693880AC6FDA99BBBCEB9160'.
//The final time that the lastAccess time is updated for this id. The lastAccess time should be updated every 3 seconds or so provided //there are incoming requests from the client containing the required id.
Jan 20, 2010 11:32:40 AM org.icepush.PushContext$Group touchIfMatching
FINEST: lastAccess updated for 1264015845649
//The last time a successful notification is sent for this push id.
Jan 20, 2010 11:34:41 AM org.icepush.BlockingConnectionServer$4 writeTo
FINEST: Sending notifications for [1264015845649].
//Then the group is discard due to expiration, exactly 2 minutes after final lastAccess update.
Jan 20, 2010 11:34:41 AM org.icepush.PushContext$Group discardIfExpired
FINEST: '3B938F0B693880AC6FDA99BBBCEB9160' push group expired.
//Continue to get these for that same group every 1 second. However, nothing is sent since the group has expired.
Jan 20, 2010 11:35:59 AM org.icepush.PushContext push
FINEST: Push notification triggered for '3B938F0B693880AC6FDA99BBBCEB9160' pushId.
So it appears that the mechanism used to update the lastAccess time is not working. As more browser instances are added, it seems the more time elapses between successful updates. When the period gets longer than 2 minutes, the group is expired/discarded and the updates are no longer sent. The client, however, appears to be still be sending the appropriate requests so it would seem that there is something on the server side that isn't quite behaving.