[ 
https://issues.apache.org/jira/browse/COUCHDB-1163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13035172#comment-13035172
 ] 

Adam Kocoloski commented on COUCHDB-1163:
-----------------------------------------

Summarizing some IRC discussion with Paul:

The problem in this ticket is definitely related to the bug in the replicator 
that was fixed in COUCHDB-885.  When the replicator pushed documents with 
attachments to a remote target it sent the leaf revision but omitted 
information about the revision path that led to that leaf.  As a result, the 
target didn't know how to merge that revision into its tree, and a conflict was 
created.  If you like, you can think of it as imposing an effective _revs_limit 
of 1.

However, that bug by itself doesn't introduce duplicate hashes in the tree.  
The duplicates are introduced when the attachments are removed from all leafs 
of one of these documents (possibly by deleting the revisions) and a 
replication is triggered.  At that point the replicator uses a different write 
path unaffected by the COUCHDB-885 bug and transfers the full revision paths to 
the target.  The target database should have figured out how to merge the 
various disconnected branches back together into a single tree at that point, 
but it failed.  That's the bug we need to address here.  It appears that the 
fix is to sort the paths by starting revision before merging them back together.

After the eventual patch for this ticket is applied users should be able to 
repair affected documents by updating any leaf revision.

> Document returned by id, but cannot be found by rev
> ---------------------------------------------------
>
>                 Key: COUCHDB-1163
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1163
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Database Core
>    Affects Versions: 1.0.1, 1.0.2
>            Reporter: James Howe
>            Priority: Blocker
>             Fix For: 1.0.3, 1.1
>
>         Attachments: Couch logging for jira issue
>
>
> Somehow, our cluster has developed the following problem on a handful of 
> documents. Will post reproduction steps if we find them. All properties have 
> been redacted. All the documents this affects also have attachments, if that 
> is significant. Once a document is in this situation, it causes conflict 
> detection, replication and include_docs to behave incorrectly or outright 
> fail.
> GET /database/4cdee83a118ea1cf3050b1d006144d46 returns
> {
>     "_id": "4cdee83a118ea1cf3050b1d006144d46",
>     "_rev": "10-df4bf65a6104ea240f100c30d3cb245d",
>     "foo": "bar"
> }
> GET /database/4cdee83a118ea1cf3050b1d006144d46?open_revs=all returns
> [
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "10-df4bf65a6104ea240f100c30d3cb245d",
>             "foo": "bar"
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "8-eea5e36daee12acd79a127abf36f7720",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "9-2cead1e4c813a4f0d10a9bc4aa28bfda",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "7-c3b44f004660caa496804409089b53d9",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "6-52e978041bb324d19e01a2ac5a243702",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "5-761bf28c6989f0fde41bdd5732c33159",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "4-abb005cf4b2d2dd12880a33af1e7066e",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "3-233e4624e620ec1c8b66f21a051832f8",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "10-55f0cdf9dd95ed230b733a2c826c842c",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "11-264c9d6c249ba2fc9b13df35cb447fd7",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "9-2cead1e4c813a4f0d10a9bc4aa28bfda",
>             _deleted: true
>         }
>     },
>     {
>         "ok": {
>             "_id": "4cdee83a118ea1cf3050b1d006144d46",
>             "_rev": "2-9f2df19059d9a460a12740a63a4d95e9",
>             _deleted: true
>         }
>     }
> ]
> GET 
> /database/4cdee83a118ea1cf3050b1d006144d46?rev=10-df4bf65a6104ea240f100c30d3cb245d
>  returns
> {
>     "error": "not_found",
>     "reason": "missing"
> }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to