[ https://issues.apache.org/jira/browse/COUCHDB-911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13087671#comment-13087671 ]
Bob Dionne commented on COUCHDB-911: ------------------------------------ so actually when there are two docs of the same id in _bulk_docs, it's the second that persists and the first that generates a conflict in merge_rev_trees, because group_alike_docs[1] reverses the order of the docs in a bucket. To preserve the order we need another reverse here. If we fixed this, we could hack the ResultsDict[2], as we're processing the docs, and return only the second doc as a conflict. But this would only solve the bulk_docs case. There's also the issue of couch_db_updater:collect_updates [3] that appears to allow more grouped docs to be added for other clients? This is ugly, perhaps it needs to be disabled for the bulk_docs case. The alternative would be to add some bits to the handle_info({update_docs.... call to track which docs turn out to have conflicts. It's not pretty [1] https://github.com/bdionne/couchdb/blob/master/src/couchdb/couch_db.erl#L435 [2] https://github.com/bdionne/couchdb/blob/master/src/couchdb/couch_db.erl#L759 [3] https://github.com/bdionne/couchdb/blob/master/src/couchdb/couch_db_updater.erl#L274 > Repeating a doc._id in a _bulk_docs request results in erroneous "Document > conflict" error > ------------------------------------------------------------------------------------------ > > 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 > 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. For more information on JIRA, see: http://www.atlassian.com/software/jira