couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Klaus Trainer (JIRA)" <>
Subject [jira] Commented: (COUCHDB-902) Attachments that have recovered from conflict do not accept attachments.
Date Thu, 02 Dec 2010 00:38:11 GMT


Klaus Trainer commented on COUCHDB-902:

Thanks Adam for bringing this issue back to my attention.

My "point" on open_doc_revs/4 and open_doc/2 was pointless, as open_doc/2 isn't used for neither
doc nor doc attachment updates.

The point that I actually wanted to make, however, is that couch_db:update_docs/4 gets a #doc{}
with only the latest rev in #doc.revs when there's a doc update without attachment, but it
gets a #doc{} with the full rev list in #doc.revs when there's an update with attachment.

To conclude that, doc updates with attachments are (AFAIK) the only situation where pruning
the older revisions would be necessary. My patch would basically solve the problem, but I
agree that it's better to not require that "#doc.revs must only include the latest rev".

Also, I've tried to identify what's wrong in the conflict resolution logic, i.e., why there's
a spurious conflict when the revs list > 1.

Here are the results that I've gained so far:

I can tell for sure that the problem is somewhere behind the couch_key_tree:merge function.
It returns {_NewTree, conflict} to the couch_db_updater:merge_rev_trees function.

I terminated my debugging session in couch_key_tree:merge_simple/2 (line 108): the second
element of the tuple {[ATree | MTree], true} represents the conflicts flag. The code here
is a bit tricky; I can't tell what exactly I can change to eliminate that spurious conflict
without breaking anything. Maybe we should grab the guy who wrote that piece of code in order
to solve this issue ;)

> Attachments that have recovered from conflict do not accept attachments.
> ------------------------------------------------------------------------
>                 Key: COUCHDB-902
>                 URL:
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Database Core
>         Environment: trunk
>            Reporter: Paul Joseph Davis
>            Priority: Critical
>         Attachments: 0001-Fixes-COUCHDB-902.patch,
> Apparently if a document has been in a conflict, they will reject requests to add an
attachment with a conflict error.
> I've tracked this down to couch_db_updater.erl line 501, but I'm not too familiar with
this part of the code so I figured I'd fill out a ticket in case anyone else can go through
this more quickly than me.
> Sure would be nice if I could attach a file when I create an issue...

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message