On Jul 8, 2013, at 12:46 AM, Jason Smith <[email protected]> wrote:

> It is still "as if the document had never existed" because these three
> procedures are equivalent (modulo my own misunderstanding of the question
> or CouchDB's code)

So, I can’t speak for CouchDB, but here’s what TouchDB does based on my 
reverse-engineered knowledge of the algorithm:

> * Replicate all docs; purge doc "foo"; replicate again

TouchDB will not pull “foo” — but I think this is a bug. This is probably where 
I need to track the source database’s purge_seq as I alluded to in the previous 
message. People have already run into this in iOS apps and been confused by the 
current behavior.

> * Replicate with a source filter that blocks doc "foo"; replicate again

Yup. Changing the filter function changes the replication ID, so it’ll cause a 
restart from sequence zero.

> * Replicate with target validate_doc_update that rejects "foo"; replicate
> again

I think you meant to include a second step “modify the target validation 
function so that it now accepts ‘foo’” ... ?

TouchDB won’t replicate “foo” in this case because changing a validation 
function doesn’t change the replication ID or otherwise invalidate the 
replication. Maybe it should?

—Jens

Reply via email to