New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Push message update mechanism #12
Conversation
Regarding the "conditional DELETE", then are we specifying that the PS will include an etag with the pushed message that can be used by the UA for its DELETE acknowledgement? |
The ETag on the push message might be a good signal that acknowledgment was requested. As for equivalent, I understand and will try to reword somehow. (Being clear, concise and accurate is sometimes hard.) |
This was intended primarily to avoid races where the acknowledgment and update arrive at around the same time. I always think of collapse going from "You have (1) new messages" immediately to "You have (2) new messages", which suggests that there isn't much time in between. If there is an acknowledgment, then creating a new message is cleanest. If there isn't (or isn't yet), then you risk a race. Perhaps we can suggest that you don't collapse if a message has been acknowledged. Then the only time window you have to worry about here is a round trip and change. |
Note that this is the sort of thing that will inevitably attract a helpful suggestion to remove the complexity. Then we simply recommend that the PUT fail and we incur a round trip. |
How does this interact with delivery receipts?
|
How does this interact with TTL's? |
@kitcambridge, sorry for being slow about this, this hasn't had a lot of attention. I think that it is more important than carrying data in acknowledgements however, so... (All of these need to be integrated into the change, of course.)
I would model this as a replacement, in every respect, so the absence of a
Just the most recent.
Yes. This is the case where the update and the ack pass each other between the push service and the user agent. We should be making acknowledgements conditional, which means that the first ack will have failed, since it hit a different state to what it expected.
The only case that is a concern here is if we allow application servers to update a message after it has been acknowledged. In that case, the application server will have to deal with the possibility of multiple acknowledgments. For that, I think that we might want to ask some of the heavier users of push what model best suits their needs.
Interesting; though I think that ultimately looks like a failure because you can't avoid the client (in this case, our application server), from making a new request. @bbangert, The TTL is relative, so it would be refreshed by this. |
This example should be updated to include a non-zero TTL. Lacking a TTL means it is effectively 0, which is counter-intuitive to asking for a stored message to be updated.... since TTL 0 means it must be delivered immediately. |
9d4c705
to
0b055f2
Compare
Good point. Updated. Also rebased. |
In writing up slides, I realized that we don't recommend the use of etags in acknowledgments. This has a different race condition if you don't use them. |
d514478
to
e3fae80
Compare
Rebased and updated to more directly address the update of |
Discussed in Yokohama, need a new pull request. |
This is relatively straightforward.
Closes #9.