couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antony Blakey <>
Subject Re: Please allow _prefix for auto-created _id
Date Sun, 08 Mar 2009 01:00:36 GMT

On 08/03/2009, at 11:14 AM, Damien Katz wrote:

> The problem is if there is a network error, a client has no way to  
> if a POST commit was successful. The success or failure response can  
> get lost, and the id of the document is completely unknown to the  
> client.

This is a different problem than the double post - would the same  
problem not occur if the client failed? e.g. if there's no way of  
finding the resultant document, then the failure modes seem symmetric.

> But if the client knows the doc id beforehand, then it can later  
> check the db (or reattempt the update) to see if the update was  
> successful or lost. And wIth deterministic rev ids, the client could  
> just do the update again and get a success response despite the  
> update maybe already having being committed.

This suggests that the POST without an id should be removed from the  
API. Most of the other APIs have revs, which protect the model from  
this bug, resulting in mere user confusion. And this prompts a thought  
about a similar problem with replicate/compact/purge et al. Maybe a  
generic solution could be to allow a client supplied UUID in the  
request, which is retained in the server for some short time (in  
network terms) to make POSTs generically idempotent over some window?

Antony Blakey
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

There is nothing more difficult to plan, more doubtful of success, nor  
more dangerous to manage than the creation of a new order of things...  
Whenever his enemies have the ability to attack the innovator, they do  
so with the passion of partisans, while the others defend him  
sluggishly, So that the innovator and his party alike are vulnerable.
   -- Niccolo Machiavelli, 1513, The Prince.

View raw message