Hi folks, we've been running into a problem where multiple replications with the same source and target are running simultaneously. This introduces quite a lot of unnecessary network traffic and causes real problems with update collisions on the local replication history documents. If replicator A updates the source doc and replicator B updates the target doc, subsequent replications will decide that a full replication is necessary.

I have some ideas about how to ensure only one is running at a time (more on that in a separate mail), but I'd like some feedback on how to handle the second..Nth request. Let's call the initial POST to _replicate "A" and the second POST "B":

Option 1 -- Respond to B with the results from A
This option works fine if the source is remote. However, if the source is local, the replication started by A will be missing updates to the source DB that occurred between A and B. B may be surprised by that result.

Option 2 -- Grab an updated DB and continue the replication
This option will include updates to the source that occurred between A and B in the response to both requests.

Option 3 -- Respond to A, then trigger another replication for B
In this case we wait till the replication started by A has completed, then do an incremental one and respond to B with the results of that incremental.

I think I'd vote for 3.  Cheers, Adam

Reply via email to