[ https://issues.apache.org/jira/browse/COUCHDB-1950?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13843730#comment-13843730 ]
Dale Harvey commented on COUCHDB-1950: -------------------------------------- So the problem being that in a system where we manage to get conflicts to happen simultaneously on seperate nodes, instead of having a 3 way merge with the original documents, this will result in a 2 way merge of the result of the 'resolved' documents (potentially lost information). That is entirely true of how we currently document how conflict resolution should be done now. There isnt a problem with this suggestion per se, more that its just exposing what is already a 'flaw' in the current documented implementation. A read resolver would be a much easier / safer thing to implement, however it comes with its own problems, to make a read resolver any way API consistent between all_docs / views / changes etc will mean a huge increase in the number of disk fetches each api call has to make, as it now needs to fetch each conflicting document and run them through a view engine Currently we hide all these complexities behind the winning revision mechanism, this is hiding what most people to consider CouchDB's killer feature so I do think its worth figuring out how to get it right > ddoc-based conflict resolution > ------------------------------ > > Key: COUCHDB-1950 > URL: https://issues.apache.org/jira/browse/COUCHDB-1950 > Project: CouchDB > Issue Type: Improvement > Reporter: Nathan Vander Wilt > > This was discussed at CouchConf in Vancouver last month, but didn't see a > hook here I could refer to in another conversation, so… > It'd be great if a design document could include a conflict resolver > function, in the vein of other "app logic" handler hooks like > validate_doc_write. I imagine it would look something like either "function > (currentWinner, nextWinningestLoser, parent)" (simply called multiple times > if more than 2 leafs) or simply "function (arrayOfDocs, revisionHistor)" — if > it returns a document, that's the winner, if not the next design document in > line gets a pass at it. (Bonus: if it throws, the conflict stays no matter > what other resolvers say?) -- This message was sent by Atlassian JIRA (v6.1.4#6159)