You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Michael Power <Mi...@ELOTOUCH.com> on 2015/11/09 22:44:43 UTC

CouchDB choose winning conflict within view

I would like to implement a conflict resolution mechanism using a latest wins strategy.  The “latest" criteria is an application specific logic.

I have been reading: https://wiki.apache.org/couchdb/Replication_and_conflicts

Currently it looks like the suggested approach is to write a view that would detect the conflicts and then write a batch job to roll over those conflicts.  I would like to implement a more lazy approach to conflict resolution.  Why create the revs when the default deterministic winner is fine?

First I would need to change which winner is selected, because I want the latest update.  My initial thought was to write a view that could emit the appropriate record that was the winner.  Then I could write the view’s map logic to enumerate the conflicts select the one that is the latest and emit that.  Based on the documentation the only information given per record for a conflict is the _revs that represent the other conflicting records.  Is there anyway to configure a view to give me all conflicting _revs and their bodies in one go, so I can choose the one to emit?

Second I would like to make it easy to resolve the conflict once I have chosen the winner.  Rather then writing a bulk operation to resolve the conflict I thought it would be nice if I could resolve the conflict along with a PUT.  I was wondering if I round trip the _conflicts array from the DB to its client and back again, is the DB intelligent enough to recognize the update as a conflict resolution?

Michael Power