![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
On Oct 30, 2009, at 11:01 AM, Lisa Dusseault wrote:
Hi, On Wed, Oct 28, 2009 at 11:03 AM, Nikunj R. Mehta <nikunj.mehta at oracle.com> wrote:This draft places unreasonable restriction on servers about processingrequests. Specifically, in §2.2, [[Concurrent modification: When a server receives multiple concurrent requests to modify a resource, those requests SHOULD be queued and processed in theorder in which they are received. If a server is incapable of queuingconcurrent requests, all subsequent requests SHOULD be rejected with a 409(Conflict) until the first modification request is complete. ]]RFC2616 describes the above status code (409) but not in the context of a particular type of HTTP request. I fail to see why this draft has mandated specific error codes and specific server behavior in response to certainrequests. It curtails server behavior without a good reason.The draft doesn't describe the reason for mandating specific error handling, but the reason is to let clients handle some error cases automatically, or at least help users make sensible choices rather than just show "FAIL". Also, I'll note that another review of this document posted just yesterday makes the opposite request, asking that the error handling responses be more specific and constrained (SM's review). This is clearly a tradeoff between server flexibility and client's being able to know what to do, so let's look at whether a client can actually do something with the information. In the case of a concurrent patch, if the client knows that something else is going on with the resource right now, it can wait a few seconds and see if the resource has changed, then try to recalculate the patch based on the new resource if that's appropriate. It may be possible for the client to resubmit the patch automatically depending on the patch format and use case. Even if the patch can't be resubmitted, it's possible for the client to explain to the user what happened. Since the requirement is a SHOULD, there is an escape clause for the server to retain flexibility if it needs to, at the cost of having behavior that is less predictable and manageable for the client. Can you live with that?
As I explained in my message, even a SHOULD is not a valid requirement. I think that no HTTP method has this kind of a requirement and I don't see PATCH as requiring it.
Nikunj http://o-micron.blogspot.com
Note Well: Messages sent to this mailing list are the opinions of the senders and do not imply endorsement by the IETF.