- From: James M Snell <jasnell@gmail.com>
- Date: Fri, 5 Oct 2012 14:26:36 -0700
- To: Martin Thomson <martin.thomson@gmail.com>
- Cc: Julian Reschke <julian.reschke@gmx.de>, ietf-http-wg@w3.org, SM <sm@resistor.net>, ietf@ietf.org
- Message-ID: <CABP7RbfEUe-dHx0X-+ji5+GKQycOzHFUKg8fKJc2=xBfG0rEQg@mail.gmail.com>
That works for me.
On Oct 5, 2012 2:18 PM, "Martin Thomson" <martin.thomson@gmail.com> wrote:
> An improvement. Though the following doesn't read quite right to me:
>
> It is important to consider that there are many -- largely
> unpredictable -- factors that can influence the amount of time it
> takes a server to process a request. The period of time specified
> is not intended to be treated as a strictly defined "hard limit"
> but rather as a hint about the client's expectation.
>
> I'm not sure that it's "mysterious forces" at the server that are the
> issue in this design. Nor is it the case that this would ever be a
> hard limit. As a preference, it's always option. How about:
>
> Messages spend some time traversing the network and being
> processed by intermediaries. This increases the time that a
> client awaits a response in addition to any time spent at a
> server. A client that has strict timing requirements can estimate
> these factors and adjust the wait value accordingly.
>
> Note that "intermediaries" could include the HTTP stack in both client
> and server.
>
> And maybe:
>
> As with other preferences, the wait preference could be ignored.
> Clients can abandon requests that take longer than they are
> prepared to wait.
>
> --Martin
>
> On 5 October 2012 11:28, James M Snell <jasnell@gmail.com> wrote:
> > How about the following change:
> >
> > <snip>
> >
> > The "wait" preference can be used to establish an upper bound on the
> > length of time, in seconds, the client expects it will take the server
> > to process the request once it has been received. In the case that
> > generating a response will take longer than the time specified,
> > the server, or proxy, can choose to utilize an asynchronous processing
> > model by returning -- for example -- a "202 Accepted" response.
> >
> > ABNF:
> > wait = "wait" BWS "=" BWS delta-seconds
> >
> > It is important to consider that there are many -- largely
> > unpredictable -- factors that can influence the amount of time it
> > takes a server to process a request. The period of time specified
> > is not intended to be treated as a strictly defined "hard limit"
> > but rather as a hint about the client's expectation.
> >
> > For example, a server receiving the following request might choose
> > to respond asynchronously if processing the request will take longer
> > than 10 seconds:
> >
> > POST /collection HTTP/1.1
> > Host: example.org
> > Content-Type: text/plain
> > Prefer: return-asynch, wait=10
> >
> > {Data}
> >
> > </snip>
> >
> > On Fri, Oct 5, 2012 at 11:12 AM, Martin Thomson <
> martin.thomson@gmail.com>
> > wrote:
> >>
> >> On 5 October 2012 10:42, James M Snell <jasnell@gmail.com> wrote:
> >> > I could drop the Date header recommendation altogether and stress in
> the
> >> > text that good clock synchronization and predictable latency is
> required
> >> > for
> >> > the wait preference to be used effectively.
> >>
> >> The feature is useful, I agree. The problem is that - as defined -
> >> the server needs to guess something about the times on the client in
> >> order to implement this reliably.
> >>
> >> Relying on clock synchronization is not realistic. Even in controlled
> >> environments, errors are commonplace.
> >>
> >> Even the simple case shows a problem:
> >> a: client sends request
> >> b: server receives request
> >> c: time passes
> >> d: server responds to request
> >> e: client receives response
> >>
> >> You require that the time be a measure of a->e. The server has no way
> >> to determine what that time is.
> >>
> >> An alternative would be to make the requirement apply to b->d. That
> >> is something that the server has direct control over. The client then
> >> gains a little extra work, but at least they are in a position to
> >> measure a->b + d->e. In any case, with low or predictable latency, I
> >> doubt that the addition of a->b + d->e will have any significant
> >> impact on whether the information is useful to the client. Especially
> >> given that times are expressed in seconds, not microseconds.
> >
> >
>
Received on Friday, 5 October 2012 21:27:04 UTC