Oooh, crosspost.

Had a similar chat on IRC last night.

I'm -0 on returning the doc during a 409 PUT just because I think
there are other options that might be preferred.

For example, allowing a read_repair function in ddocs, that would take
all conflicting revisions as input and return the resolved document as
output. Or allowing a resolve_conflict function that is called at the
moment of conflict creation, allowing it to be downgraded to a
non-conflicting update.

With either, or both, of those mechanisms, the proposed one here is unnecessary.

B.

On Sun, Jan 23, 2011 at 12:04 PM, Robert Dionne
<dio...@dionne-associates.com> wrote:
> +1
>
> this sounds like an excellent idea.
>
>
> On Jan 23, 2011, at 12:21 AM, kowsik wrote:
>
>> I've been spending a fair bit of time on profiling the performance
>> aspects of Couch. One common recurring theme is updating documents on
>> a write-heavy site. This is currently what happens:
>>
>> PUT /db/doc_id
>>    <- 409 indicating conflict
>>
>> loop do
>>    GET /db/doc_id
>>        <- 200
>>
>>    PUT /db/doc_id
>>        <- 201 (successful and returns the new _rev)
>> end until we get a 201
>>
>> What would be beneficial is if I can request the "current" doc during
>> PUT like so:
>>
>> PUT /db/doc_id?include_doc=true
>>    <- 409 conflict (but the 'doc' at the current _rev is returned)
>>
>> This would allow the caller to simply take the doc that was returned,
>> update it and try PUT again (eliminate the extra GET). This is
>> especially valuable when the app is on one geo and the db is in yet
>> another (think couchone or cloudant).
>>
>> 2 cents,
>>
>> K.
>> ---
>> http://twitter.com/pcapr
>> http://labs.mudynamics.com
>
>

Reply via email to