[
https://issues.apache.org/jira/browse/COUCHDB-1163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13035180#comment-13035180
]
Paul Joseph Davis commented on COUCHDB-1163:
--------------------------------------------
For posterity:
The key part that made sorting the paths by starting revision was to think of
it as "always merge paths in order of paths closest to the root of the abstract
tree". I call it abstract because after we stem far enough the 'tree' ends up
becoming a set of trees paired with a distance to the original root. Sorting
paths so that we start out closest to root should guarantee that we never
inadvertently end up with a tree that has paths that could be merged together
which should theoretically prevent duped values in the tree. I have a beautiful
proof for this but alas it is too long to fit into the margin.
Also, as Adam mentions, anytime a document is altered it would trigger this
cleanup code which would fix the internal state of all docs affected by the
duped revision bug. I'm also informed that running a compaction will stem
document revisions so that'd be a way to fix up an entire db.
> 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