-
Notifications
You must be signed in to change notification settings - Fork 141
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
Retry-able upload creations using Idempotency-Key #2293
Comments
During IETF 115 the feedback was largely uniform against including this in the draft. Since Idempotency-Key is its own draft in the httpapi WG, people can still choose to use this header for their applications if they like to do so. Maybe in the future we will revisit this topic if we have seen that Idempotency-Key proved helpful in real-world scenarios. |
@Acconut I'm not sure what part of the idea is disfavored, could you please discuss this on list? In particular,
I don't think this reflects the idea I was proposing. If the critique is about using the Idempotency-Key header directly, that's understandable, it doesn't have to be called that or use that draft. The important thing I'm pointing out is that resumable uploads are necessarily idempotent. |
The corresponding proposal has not been accepted so far: httpwg/http-extensions#2293
IIRC, the disagreement was more about
I agree that a resumable upload in its entirety should be idempotent. However, this does not mean that each operation of a resumable upload has to be idempotent. For example, the same Upload Appending Procedure cannot be retried without running into errors, making it not-idempotent. That being said, I want to bring up the topic of error handling for Upload Creation Procedure again. |
See #2596 |
The current draft -00 of the resumable upload protocol uses a client-generated token to identify which procedures belong together. In #2292 an alternative approach is proposed where the server generates an upload URL and return it to the client in the response for the Upload Creation Procedures. Details can be found in the PR.
The original approach with the client-generated tokens allowed the client to resume an upload even if it never received an response for the Upload Creation Procedure. The client could just perform an Offset Retrieving Procedure and resume based on the corresponding response. This is obviously not possible anymore with the server-generated URLs because the client does not know these URLs until it received a response.
So, Austin Wright (@awwright) had the idea to use the Idempotency-Key header to allow retrying the Upload Creation Procedure if the response was not received (see https://lists.w3.org/Archives/Public/ietf-http-wg/2022OctDec/0004.html). There is currently a draft for the Idempotency-Key header being discussed by the httpapi working group: https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/. Based on this idea, a retry-able upload creation could look like this:
Finally, retry-able requests and resumable uploads are not the same. However, in this case, I believe they work hand-in-hand to deliver reliable uploads, which is the entire goal of this adventure.
What do you think about this?
The text was updated successfully, but these errors were encountered: