[
https://issues.apache.org/jira/browse/COUCHDB-605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13088284#comment-13088284
]
Robert Newson commented on COUCHDB-605:
---------------------------------------
_update handlers do not allow you to ignore MVCC, the update can still fail
with a real 409 if the doc is updated concurrently. All it's doing is giving
you the current _rev value, but it's not performing any locking (there are no
read or write locks in couchdb) so a successful update between the start of the
update function and its return will cause the update handler to fail with 409.
> _update handler doesn't conflict for existing document
> ------------------------------------------------------
>
> Key: COUCHDB-605
> URL: https://issues.apache.org/jira/browse/COUCHDB-605
> Project: CouchDB
> Issue Type: Bug
> Affects Versions: 0.10
> Environment: Ubuntu Karmic, in particular it's CouchDB version
> 0.10.0-0ubuntu3
> Reporter: Sergey Shepelev
> Assignee: Chris Anderson
>
> design doc:
> "updates": {
> "hello": "function(doc, req) { doc.value = 100500; return [doc, 'foo
> bar']; }"
> }
> $ curl -X PUT --data-binary @- http://localhost:5984/shkaf/client:foo << EOF
> > {"_id":"client:foo"}
> > EOF
> {"ok":true,"id":"client:foo","rev":"1-967a00dff5e02add41819138abb3284d"}
> $ curl -X PUT --data-binary @-
> http://localhost:5984/shkaf/_design/client/_update/hello/client:foo?A=B << EOF
> > {"_id": "client:foo"}
> > EOF
> foo bar
> And it really updated the document.
> What i expected here is error: conflict because document with such _id
> already existed and i didn't provide _rev to _update handler.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira