Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.3
-
Fix Version/s: EE-3.3.0.GA
-
Component/s: Push Library
-
Labels:None
-
Environment:ICEpush, ICEfaces, ICEmobile
-
Assignee Priority:P1
Description
One of the detection cases for Cloud Push is that a notification is sent, but not acknowledged via a subsequent listen.icepush.
This is currently reproducible in mobileshowcase with a 5 second Priority Push.
This is currently reproducible in mobileshowcase with a 5 second Priority Push.
Activity
Ted Goddard
created issue -
Ted Goddard
made changes -
Field | Original Value | New Value |
---|---|---|
Assignee | Jack Van Ooststroom [ jack.van.ooststroom ] |
Ken Fyten
made changes -
Assignee Priority | P1 [ 10010 ] |
Jack Van Ooststroom
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Cannot Reproduce [ 5 ] |
Ted Goddard
made changes -
Resolution | Cannot Reproduce [ 5 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #35904 | Tue Jun 04 18:09:37 MDT 2013 | jack.van.ooststroom | Fixed JIRA |
Files Changed | ||||
MODIFY
/icepush/trunk/icepush/core/src/main/java/org/icepush/PushID.java
MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/LocalPushGroupManager.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/BlockingConnectionServer.java |
Jack Van Ooststroom
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
Since the fixes to
PUSH-244andPUSH-245I haven't been able to reproduce this anymore. However, when I was originally able to reproduce it, I didn't see the ConcurrentModificationException nor was I using logging at Level.FINE level. Therefore I'm in doubt that the fixes toPUSH-244andPUSH-245could have resolved this issue. But as I can't reproduce it anymore I'll mark this one as Cannot Reproduce. If Ted and/or Steve can reproduce it again we can re-open this one.As Ted noted that he suspects a Cloud Push not having been confirmed correctly upon a subsequent listen.icepush request (either by the lack of that request or something at the server-side going awry) it could get into the case where the server decides not to schedule the ConfirmationTimeout due to the following if-statement:
long now = System.currentTimeMillis();
{ return startConfirmationTimeout(sequenceNumber, timeout); }long timeout = status.getConnectionRecreationTimeout() * 2;
if (notifyBackURI.getTimestamp() + minCloudPushInterval <= now + timeout)
else {
{ LOGGER.log( Level.FINE, "Timeout is within the minimum Cloud Push interval for URI '" + notifyBackURI + "'. (" + "timestamp: '" + notifyBackURI.getTimestamp() + "', " + "minCloudPushInterval: '" + minCloudPushInterval + "', " + "now: '" + now + "', " + "timeout: '" + timeout + "'" + ")"); }if (LOGGER.isLoggable(Level.FINE))
}
If the NotifyBackURI instance doesn't get touched when expected it could happen that, especially with the 5 second Priority Push, the Server decides not to schedule the ConfirmationTimeout as part of its flood prevention logic.