HTTP response codes on doc conflict and database conflict may not agree with
HTTP spec
---------------------------------------------------------------------------------------
Key: COUCHDB-226
URL: https://issues.apache.org/jira/browse/COUCHDB-226
Project: CouchDB
Issue Type: Bug
Components: HTTP Interface
Affects Versions: 0.9
Reporter: Paul Carey
Priority: Blocker
I'm creating this issue as per Jan's request. It was originally posted to the
mailing list a short while ago.
====
An attempt to create an already existing database returns a 409.
$ curl -v -s -X PUT localhost:5984/shiny_new_db 2>&1 | grep '< HTTP'
< HTTP/1.1 201 Created
$ curl -v -s -X PUT localhost:5984/shiny_new_db 2>&1 | grep '< HTTP'
< HTTP/1.1 409 Conflict
>From the 409 section of the HTTP spec [1]
"This code is only allowed in situations where it is expected that the user
might be able to resolve the conflict and resubmit the request."
But the database already exists - there is no resolution, so I'm not sure a 409
is the best response code here.
The 412 section of the spec states
"The precondition given in one or more of the request-header fields evaluated
to false"
Arguably, this is what should be returned when an attempt is made to re-create
a pre-existing database - the precondition is that you can PUT to a database
URI at most once.
As for document conflict, CouchDB returns a 412.
$ curl -v -s -X PUT -d '{"_id":"foo"}' localhost:5984/shiny_new_db/foo
2>&1 | grep '< HTTP'
< HTTP/1.1 201 Created
$ curl -v -s -X PUT -d '{"_id":"foo"}' localhost:5984/shiny_new_db/foo
2>&1 | grep '< HTTP'
< HTTP/1.1 412 Precondition Failed
I think a document conflict might have returned a 409 at some point in the
past. In fact this is what the Document API wiki page [2] states it returns.
Given that the user may resolve the conflict and resubmit the request, a 409
makes sense here.
To clarify, unless I'm missing something, I think an attempt to create an
already existing database should return a 412 and an attempt to update a
document that results in a conflict should return a 409.
[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
[2] http://wiki.apache.org/couchdb/HTTP_Document_API
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.