[
https://issues.apache.org/jira/browse/COUCHDB-1184?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13045628#comment-13045628
]
Paul Joseph Davis commented on COUCHDB-1184:
--------------------------------------------
When I say rescuing a doc from deletion I was refering to using the
non-interactive edits which is the code path that docs go through when
replicating. In retrospect it shouldn't be part of this conversation and hence
we should pretend I never mentioned it.
I think you're quite right in the analysis. If a _rev is present it should be
treated as an update and fail in the cases where those docs don't exist
(regardless of PUT, POST, or _bulk_docs). If a _rev exists and the doc exists
the update or fail should already be in place.
I'm not sure what you mean about the "one larger" scenarios. The behaviour you
saw is just a slight difference in how the docs are treated in _bulk_docs vs.
single doc updates. Basically, single doc updates were pretending that _rev
didn't exist and creating the new doc. When you see the _rev depth (the number
before the hash) being incremented it just means that the doc went through the
merge logic. There will always be a difference here in some corners of the API
due to how replication works so as long as we get rid of the
ignore-_rev-on-update behavior this will be fine. Plus _rev's are opaque and
libraries and users should not rely on their format or behaviour.
> Bulk insert of design documents fails with conflict if the documents contain
> "_rev" when they do not exist in the database
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: COUCHDB-1184
> URL: https://issues.apache.org/jira/browse/COUCHDB-1184
> Project: CouchDB
> Issue Type: Bug
> Affects Versions: 0.11
> Reporter: Nuutti Kotivuori
>
> First a simple example to reproduce:
> $ curl -X PUT http://localhost:5984/repltest
> {"ok":true}
> $ curl -H "Content-type: application/json" -X POST --data
> '{"docs":[{"_id":"_design/a","_rev":"1-2f4a8d26d103e914167052aea70a5031"}]}'
> http://localhost:5984/repltest/_bulk_docs
> [{"id":"_design/a","error":"conflict","reason":"Document update conflict."}]
> So, inserting a previously non-existing design document in to a database via
> bulk docs post fails the inserted design document has a "_rev" member.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira