Looks like the cause of the duplicates is a problem in the HTTP layer. It seems POST requests can fail to respond despite success, and then are retried by the HTTP client. I'm not sure if this is an HTTP client or a TCP layer thing that's doing the re-transmission.

There seems to be a bug in Mochiweb that causes this to happen frequently when used by Safari, where it suddenly breaks the connection to the client. I'm not sure why it does this.

However, upon investing this it appears this is always a potential problem, POSTing documents isn't idempotent, so a success followed by a network failure and retry can cause dupes. Therefore, don't use POST to create documents, generate the document ID yourself and use PUT. This will prevent duplicate documents from ever happening due to network failure.

But it should not be the case that replication causes duplicates. Replication uses only idempotent requests, making that unlikely (but I won't say impossible).

-Damien

On Jul 15, 2008, at 3:24 PM, Chris Anderson wrote:

On Tue, Jul 15, 2008 at 10:40 AM, John Evans <[EMAIL PROTECTED]> wrote:
FWIW I've been running into these exact same issues.

I'll chime in with a me too. I've worked around it by writing a
client-side replicator, that loads up all docs from both dbs, and
copies any missing docs over to the target db. My requirements mean I
don't need to worry about multiple versions of a doc, so this has
worked for me for the time being. It would be more convenient to have
fast, reliable replication.

I'll commit the replicator to CouchRest this week.

--
Chris Anderson
http://jchris.mfdz.com

Reply via email to