On 8 Mar 2009, at 01:04, Antony Blakey wrote:


On 08/03/2009, at 10:08 AM, Jan Lehnardt wrote:


On 8 Mar 2009, at 00:22, Antony Blakey wrote:


On 08/03/2009, at 4:41 AM, Chris Anderson wrote:

Currently it's recommended not to POST new documents without ids to
CouchDB. Due to HTTP protocol issues this can result in duplicate
document creation.

I've never really understood this. Wouldn't it mean that all POST operations in CouchDB need to be made idempotent by the server because they might be erroneously repeated by middleware?

Correct, a bug in Safari / CFNetwok brought this up.

I can't find a reference to a Safari/CFNetwork double post problem. Do you have one? Will it become obsolete?

http://osdir.com/ml/db.couchdb.devel/2008-07/msg00127.html (lmgtfy "safari sends post twice", seriously, this is tiring).


One implication of this is that a create or update might return a 412, even though it has succeeded, because the client is seeing the response from the second, repeated POST? And a bulk request might return erroneous results as well?


Correct. As no data is lost, this is a nuisance, less a problem.


On that basis, should only PUTs be allowed, to protect users from an infrastructure bug they aren't aware of?

I've been thinking along these lines a few times now. This might be worth considering, but I'm no convinced yet.


Those lmgtfy links seem to be about the double post being triggered by the browser client, as opposed to e.g. a ruby client. I knew about that problem, but I've not seen a problem report due to *middleware* e.g. proxy/cache ignoring the non-idempotency of POST.

The point is that CouchDB can't know if requests come from a broken or compliant middleware system with new ones coming up all the time.

Cheers
Jan
--



Reply via email to