On May 31, 2014, at 2:30 PM, Robert Samuel Newson <[email protected]> wrote:

> The main trouble is loops. If couchdb edits the doc after the user edits it, 
> this edit is also replicated out to wherever you replicate to, which will 
> make this edit again, and then back again, and then back again.

I agree — this has some problematic interactions with the replicator.

If a document is replicated to two databases, and one of them uses this feature 
to modify the document, the destination databases now contain two documents 
with the same doc and revision ID but different contents. That explicitly 
breaks one of the invariants the replicator relies on.

(The same issue applies if both databases use this feature, but don’t make 
identical changes. This could happen even if they’re both using identical 
auto-update functions, e.g. if the auto-update adds a timestamp or a 
randomly-generated identifier.)

This can be averted if the auto-update is only used in the case where 
new_edits=true, i.e. a normal PUT. Both because the replicator doesn’t use this 
mode, and because this mode assigns a new revID, so it can be based on the 
post-processed doc’s contents.

—Jens

Reply via email to