- From: Lucas Pardue <lucaspardue.24.7@gmail.com>
- Date: Mon, 20 Jun 2022 03:41:02 +0100
- To: Glenn Strauss <gs-lists-ietf-http-wg@gluelogic.com>
- Cc: Guoye Zhang <guoye_zhang@apple.com>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CALGR9oamykn+QbTG89ELMLCuHHdP=PEod_jgJ7-6JgJivnNhKA@mail.gmail.com>
Hi Glenn, Responding in line: On Mon, Jun 20, 2022 at 3:03 AM Glenn Strauss < gs-lists-ietf-http-wg@gluelogic.com> wrote: > On Sun, Jun 19, 2022 at 04:52:58PM +0100, Lucas Pardue wrote: > > Hi Glenn, > > > > I'd like to respond to one aspectdirectly: > > > > On Sun, Jun 19, 2022 at 7:04 AM <gs-lists-ietf-http-wg@gluelogic.com> > wrote: > > > > > On Thu, Jun 16, 2022 at 02:30:59PM -0700, Guoye Zhang wrote: > > > > Our previous resumable upload draft generated a lot of discussions. > > > > > > At least in my case, I attempted to be polite after you submitted a > > > draft without first doing a survey of existing RFCs. You admitted no > > > knowledge of WebDAV RFCs, which I deemed a large oversight considering > > > the nature of the tus-v2 protocol. > > > > > > > I’m glad to announce that we have a new draft ready to address many > > > feedbacks that suggested adopting the PATCH method. > > > > > > The draft abstract begins with unsubstantiated claims to justify > itself, > > > and I believe that almost all of those claims are also misleading. > > > > > > "HTTP clients often encounter interrupted data transfers as a result of > > > canceled requests or dropped connections. [...] it is often desirable > to > > > issue subsequent requests that transfer only the remainder of the > > > representation." > > > > > > The multiple uses of "often" are misrepresentations, IMHO. > > > > > > A large percentage of HTTP requests are GET/HEAD and have no body. > > > A sizable percentage (if not more) of HTTP POST requests are small, > > > e.g. using POST as an alternative to GET along with XSRF tokens. > > > > > > What data do you have to support the claims in the draft Abstract? > > > What percentage of requests have request bodies, and further have > > > request bodies that are sufficiently large that it is excessively > > > wasteful to resend the entire representation? (and when safe to do so!) > > > > > > > The text you quote from the tus v2 draft is based on an almost verbatim > > section of text from RFC 9110 Section 14 [1], which describes Range > > Requests. Quote: > > > > > Clients often encounter interrupted data transfers as a result of > > canceled requests or dropped connections. When a client has stored a > > partial representation, it is desirable to request the remainder of that > > representation in a subsequent request rather than transfer the entire > > representation. > > In RFC 9110, that paragraph *immediately* follows the heading "Range > Requests". In that context, "Clients often encounter interrupted data > transfers" implicitly refers to downloads, as described in the section. > RFC 9110 Section 14.5 also includes information about uploads wrt partial PUT, which was motivated by discussion of use cases in https://github.com/httpwg/http-core/issues/618 and survey of approached in https://lists.w3.org/Archives/Public/ietf-http-wg/2020OctDec/0285.html So while I see the logic, I don't think it's fair to assume that RFC 9110 is only about downloads. > On the other hand, when quoted in the Abstract of the tus draft titled > "tus - Resumable Uploads Protocol", I mistook that to refer to uploads. > Hence, I found the statements misleading, since "interrupted data > transfers" is ambiguous and could refer to downloads or uploads. > When failures happen on a connection, they'll affect an upload flow just as much as a download one. But I take the point that the document title in combination with the opening sentence could be misinterpreted. A better way would be to present what is supported today, present the capability gap, and talk about the goal of the draft. Subsequent versions of a document could even drop the exposition and focus on the specification protocol details, should the WG manage to get so far. > > I wrote the tus v2 text to explicity juxtapose resumable HTTP downloads > > against uploads. To quote the abstract in full: > > > > > HTTP clients often encounter interrupted data transfers as a result > > of canceled requests or dropped connections. Prior to interruption, > > part of a representation may have been exchanged. To complete the > > data transfer of the entire representation, it is often desirable to > > issue subsequent requests that transfer only the remainder of the > > representation. HTTP range requests support this concept of > > resumable downloads from server to client. This document describes a > > mechanism that supports resumable uploads from client to server using > > HTTP. > > When a client uses an idempotent HTTP request method, such as GET, then > the client may repeat a disconnected request, and may attempt to utilize > a Range request. > > When a client is providing a request body upload with a non-idempotent > method, such as POST or PUT, then the request is not necessarily safe to > repeat. Appropriate behavior to attempt to recover may be > application-specific. > > I want to emphasize: **application-specific** > > Hence, I still think that Abstract is misleading and an inaccurate > attempt to convey equivalence between client download using an > idempotent method, and client upload using a non-idempotent method. > They are not equivalent; there are very important distinctions that > should be explicitly stated before trying to describe similarities. > I see Guoye has also responded about automatic retries. But are a chain of GET range requests really retries, or are they simply a sequence of related requests with different byte ranges? > > A different reading is that, > > having seen multiple HTTP-based custom resumable upload approaches from > > different vendors, there is an unaddressed use case. > > I do agree with the sentiment, just not the proposed solution. > > > Hence it is not seldom > > that for applicaitons that feature uploads, resumption is desirable. > > Again: > upload recovery is **application-specific** with a non-idempotent method > (automatic retrying by a client is not generically or universally safe) > > "tus - Resumable Uploads Protocol" is application-specific as I read it. > I think the draft should proceed to describe an application-specific > protocol and should severely scale back its attempt to generically > extend HTTP for resumable uploads. > Thanks for these comments. Speaking to both points, if there were a different form of solution would you feel it could be less application-specific? I think that would be a good thing for the WG to try and come to some answer on; is this a problem that can ever be solved in HTTP or not. Cheers Lucas
Received on Monday, 20 June 2022 02:41:27 UTC