couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Filipe Manana (Updated) (JIRA)" <>
Subject [jira] [Updated] (COUCHDB-911) Concurrent updates to the same document generate erroneous conflict messages
Date Fri, 18 Nov 2011 17:14:52 GMT


Filipe Manana updated COUCHDB-911:

    Attachment: 0001-Add-test-test-etap-074-doc-update-conflicts.t.patch

Hi Bob, the patch looks correct to me, so +1.

While I understand the issue with bulk docs (because of the way we collect the results in
the dictionary), looking briefly at the code, I don't see yet how the same issue can happen
when we have multiple clients updating the same doc.

I made a test to confirm this, which is attached here and spawns many clients which attempt
to update the same doc.

Running this test, with the following one liner on top of it:

I get the following sample output:

So effectively it seems to me it covers that case. For 5000 clients for e.g., the updater
was able to collect 80 updates for the same document.

Anyway, this is a good test to have around.

Minor detail: you're using some Emacs mode indentation which is very different from what we
use everywhere else.

+    Docs2 = lists:map(fun(Doc) ->
+                          {Doc, make_ref()}
+                      end,Docs),

> Concurrent updates to the same document generate erroneous conflict messages
> ----------------------------------------------------------------------------
>                 Key: COUCHDB-911
>                 URL:
>             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-Add-test-test-etap-074-doc-update-conflicts.t.patch, 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'
> [{"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:!default.jspa
For more information on JIRA, see:


View raw message