You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Adam Kocoloski (Updated) (JIRA)" <ji...@apache.org> on 2011/10/14 15:32:12 UTC

[jira] [Updated] (COUCHDB-911) Concurrent updates to the same document generate erroneous conflict messages

     [ https://issues.apache.org/jira/browse/COUCHDB-911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Adam Kocoloski updated COUCHDB-911:
-----------------------------------

    Skill Level: Committers Level (Medium to Hard)  (was: New Contributors Level (Easy))
        Summary: Concurrent updates to the same document generate erroneous conflict messages  (was: Repeating a doc._id in a _bulk_docs request results in erroneous "Document conflict" error)

This is a bug in group commits.  _bulk_docs is one way to generate a group commit, but it's not the only one.  Two concurrent writers trying to update the same document will also trigger this bug.  They'll both receive a 409 Conflict response, but one of the edits will be saved.

We can't sweep this one under the rug by talking about proper usage of _bulk_docs.
                
> Concurrent updates to the same document generate erroneous conflict messages
> ----------------------------------------------------------------------------
>
>                 Key: COUCHDB-911
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-911
>             Project: CouchDB
>          Issue Type: Bug
>          Components: HTTP Interface
>    Affects Versions: 1.0
>         Environment: Cloudant BigCouch EC2 node
>            Reporter: Jay Nelson
>            Priority: Minor
>             Fix For: 1.2
>
>         Attachments: 0001-Fix-whitespace.patch, 0002-Failing-test-for-duplicates-in-bulk-docs.patch, 0003-Add-references-to-docs-to-prevent-dups-from-being-co.patch
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Repeating an "_id" in a _bulk_docs post data file results in both entries being reported as document conflict errors.  The first occurrence actual inserts into the database, and only the second occurrence should report a conflict.
> curl -d '{ "docs": [ {"_id":"foo"}, {"_id","foo"} ] }' -H 'Content-Type:application/json' -X POST http://appadvice.cloudant.com/foo/_bulk_docs
> [{"id":"foo","error":"conflict","reason":"Document update conflict."},{"id":"foo","error":"conflict","reason":"Document update conflict."}]
> But the database shows that one new document was actually inserted.
> Only the second occurrence should report conflict.  The first occurrence should report the "_rev" property of the newly inserted doc.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira