-
Notifications
You must be signed in to change notification settings - Fork 41
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
Add request ID to client lib spec #417
Comments
We need to additionally require that the request ID remains the same across all fallback host retries. See #417 for a related issue. |
I was thinking about this a bit more, and I think we should seriously consider putting this in the spec sooner rather than later. My thinking is that adding this functionality to client libraries is trivial, yet gives us far more insight into issues when they arise, but also may in fact be able to deal with the speculative issue we have of idempotency. If the spec stated:
Then we could now:
Then we could later when we have time:
Notes:
@SimonWoolf @paddybyers @funkyboy WDYT? |
The publish idempotency requirement isn't really related because that I think needs to be addressed by putting a library-specified messageId in the message that's published. The mechanism in realtime already exists to prevent the duplicate publish. Simply putting an id in the request params won't allow us to de-dupe across frontend instances, without some additional thing being persisted per-request. |
No, not necessarily. In most cases, customers who publish over REST probably don't want to think about this level of detail, and only publish from one client. What we are mostly trying to defend against is the most common problem of an in-flight HTTP request's connection being abruptly terminated, the client detecting that, and retrying the request to another region, which in turn can theoretically result in two publishes of the same message.
Sure, but as above, that's a different requirement and adds a new layer of complexity for customers. We want to avoid that for the bulk of customers who won't haVe unique IDs, and don't care about this.
Yup, but we're only talking about REST requests here for idempotency. Additionally, that is not 100% true I am afraid either as a connection could termiate like an in-flight HTTP request, the connection could be re-established in another region, and republished. That's very very unlikely, but still plausible.
Sure, but if we add it to the protocol, we can worry about that later. If we don't, as we know, when we do want to fix that issue we will have our hands tied. Also, de-duping would most likely never be done on frontends, it would be done on the channels themselves. Why would the frontends need to do this? |
@paddybyers @SimonWoolf isn't this now covered with the idempotency support? |
This was done in #763 with an |
We have previously discussed ways to help us debug request failures for customers as it can be quite difficult when there is a very high volume of requests globally.
We have a working undocumented solution in Ruby at ably/ably-ruby#133.
We have previously also discussed:
We should consider adding this to the next minor release of our spec as it will help us resolve issues more quickly for customers.
┆Issue is synchronized with this Jira Task by Unito
The text was updated successfully, but these errors were encountered: