Re: Gen-ART LC review of draft-dusseault-http-patch-15.txt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Roy,

Just a couple more comments below, and then I will have
said all I can usefully say.

On 2009-11-14 12:57, Roy T. Fielding wrote:
> On Nov 13, 2009, at 2:26 PM, Brian E Carpenter wrote:
>> On 2009-11-13 23:35, Julian Reschke wrote:
>>> Brian E Carpenter wrote:
>>>> On 2009-11-13 20:19, Julian Reschke wrote:
>>>>> Brian E Carpenter wrote:
>>>>>> As far as I can tell, the proposal places the burden for ensuring
>>>>>> atomicity entirely on the server. However, PATCH is explicitly not
>>>>>> idempotent. If a client issues a PATCH, and the server executes the
>>>>>> PATCH,
>>>>>> but the client then fails to receive an indication of success due to
>>>>>> an extraneous network glitch (and TCP reset?), then what prevents the
>>>>>> client
>>>>>> issuing the same PATCH again? In other words, absent a two-phase
>>>>>> commit,
>>>>>> there appears to be no transactional integrity.
>>>>> How is this different from PUT or POST? If you need repeatability of the
>>>>> request, just make the request conditional using "if-match"...
>>>> PATCH seems more dangerous than those simply because it is partial
>>>> update of a resource, and I don't feel it's sufficient to say that
>>>> there might be a way of detecting that it has failed to complete,
>>>> if you're executing a series of patches that build on one another.
>>> POST can be a partial update as well, for the simple reason that POST
>>> can be *anything*. As a matter of fact, people are using POST right now,
>>> as PATCH was removed in RFC 2616.
>> I wasn't involved in reviewing RFC2616 (or in the original design of POST,
>> even though it happened about 20 metres from my office at that time). But
>> yes, POST also lacks transactional integrity. Incidentally, that recently
>> caused me to donate twice as much as I intended to the relief fund for
>> the tsunami in Samoa, although the direct cause was a network glitch.
> 
> That doesn't have anything to do with POST lacking transactions.
> Any server is fully capable of detecting repeated transactions
> just by looking at the data sent.

Not in this case. The service was instantiated once, received
a legitimate series of POSTs, including the final one triggered
by a SUBMIT button, and then the final response code to the client
(a standard browser) vanished, for whatever reason. [Digression
about why this failure was probably caused by a NAT deleted.]
The human client simply sees a browser timeout and has no possible
way of knowing whether the SUBMIT executed. As it turns out, my credit
card bill later showed that it did.

>>>> Talking about transactional integrity in the IETF has always been
>>>> hard, for some reason. But something described as "patch" is exactly
>>>> where you need it, IMHO.
>>> PATCH does not need to be special, and shouldn't be special. That being
>>> said, it wouldn't hurt to clarify that PATCH can be made repeatable
>>> (idempotent) by making it conditional.
>> I would make that a SHOULD and, as I said originally, be more precise
>> about how to use strong ETags to achieve it.
> 
> No.  The patch format may be designed to be repeatable (append).
> The patch format may include its own conditions (context diffs,
> before/after metadata, etc.).  HTTP is neither a filesystem nor
> a database, so don't expect the protocol to interfere with
> legitimate communication just because some resources might
> require transactions for tightly-coupled behavior.  That is not
> the protocol's job.

Given that HTTP took the stateless approach that it did,
I don't expect the protocol to embed transactional integrity.
But I do expect the protocol spec to describe in normative terms
how to detect a relatively likely type of failure. I agree
that whether that is needed depends on the use case for PATCH.

     Brian
_______________________________________________
Ietf mailing list
Ietf@xxxxxxxx
https://www.ietf.org/mailman/listinfo/ietf

[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Fedora Users]