couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Moss <jonathan.m...@tangentlabs.co.uk>
Subject Re: 412 on update
Date Thu, 23 Oct 2008 11:54:24 GMT
Jan Lehnardt wrote:
>
> On Oct 23, 2008, at 09:59, Jonathan Moss wrote:
>
>> Nick Johnson wrote:
>>> On Tue, Oct 21, 2008 at 5:23 PM, Jonathan Moss <
>>> jonathan.moss@tangentlabs.co.uk> wrote:
>>>
>>>
>>>> Thanks Bradford,
>>>>
>>>> That allowed me to track down the issue.  It seems that when the PHP
>>>> classes serialize the document in json for saving the _rev is cast 
>>>> to an
>>>> integer. The rev numbers are often larger than the maximum integer 
>>>> value PHP
>>>> supports and it therefore I end up with a -ve number and the revisions
>>>> obviously don't match and I get a 412 - conflict.
>>>>
>>>> I then cast the value to a float which is done elsewhere in the 
>>>> library.
>>>> This still resulted in a 412. So I looked at the raw put data from the
>>>> request and compared it to the raw get data I got in the first 
>>>> place.  The
>>>> only difference was the by casting to a float _rev was encoded as:
>>>>
>>>> "_rev":123456789
>>>>
>>>> whereas I received it as:
>>>>
>>>> "_rev":"123456789"
>>>>
>>>> By casting as a string just before json encoding I now get a much 
>>>> happier
>>>> 201 status code during my testing. Should the server really be 
>>>> quibbling
>>>> over the data type? Not a problem if it does but it was a difficult 
>>>> one to
>>>> track down.
>>>>
>>>
>>>
>>> Why are you casting it from a string in the first place? Just treat 
>>> it as an
>>> opaque value and return it to the server as sent to you. Besides, 
>>> you can't
>>> represent every possible 64 bit integer in a double anyway.
>>>
>>>
>>>
>> I wasn't my code doing the casting. I am using the CouchDB PHP 
>> classes from the couchprojects php library. It is that code which is 
>> casting to float. I am quite happy to modify the code but it would be 
>> nice to be able to commit my changes upstream so that other can 
>> benefit from them. Anyone have any idea who I can ask to get write 
>> privileges to the svn repo or who I can send the changes to?
>
> that would be me, can you post a patch to the bug tracker on the 
> couchprojects project? :)
>
> Cheers
> Jan
> -- 

Done, Issue #4 - Let me know if there is anything else you would like 
help with? At least on the PHP side, my Erlang is woefully poor.

Jon

>>
>>
>>
>>>> Regards,
>>>> Jon
>>>>
>>>> I believe a 412 is a conflict,  anyone care to prove me wrong?
>>>>
>>>>>
>>>>> ----- Original Message ----
>>>>> From: Jonathan Moss <jonathan.moss@tangentlabs.co.uk>
>>>>> To: couchdb-user@incubator.apache.org
>>>>> Sent: Tuesday, October 21, 2008 3:07:43 AM
>>>>> Subject: Re: 412 on update
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Hi everyone,
>>>>>>
>>>>>> I am using the CouchDB PHP library (from
>>>>>> http://couchprojects.googlecode.com/svn/trunk/libraries/php/) to
>>>>>> communicate with the database an I am having some issues updating

>>>>>> a design
>>>>>> document. When I try to save the design document I receive a 412

>>>>>> HTTP status
>>>>>> code. The code below is a simplification of what I am doing but 
>>>>>> should
>>>>>> explain what I am trying to do.
>>>>>>
>>>>>> $objCouch = new Couch(array("host" => localhost, "port" =>
5984));
>>>>>> $objDesignDoc = 
>>>>>> $objCouch->database($strDB)->get("_design/ADesignDoc";
>>>>>> $objFunction = new stdClass();
>>>>>> $objFunction->map = "function(doc){if(doc.Type = 
>>>>>> 'ANode'){emit(doc.Name,
>>>>>> doc);}}";
>>>>>> $objDesignDoc->views->$strFunc = $objFunction;
>>>>>> $objDesignDoc->save();
>>>>>> echo "Status: " . $objDesignDoc->lastStatusCode . "\n";
>>>>>>
>>>>>> What does a 412 status code mean in this context and does anyone

>>>>>> have any
>>>>>> idea what I can do to fix it?
>>>>>>
>>>>>> Regards,
>>>>>> Jon
>>>>>>
>>>>>>
>>>>>>
>>>>> I should have mentioned I am using version 0.8.1 of CouchDB
>>>>>
>>>>> Thanks,
>>>>> Jon
>>>>>
>>>>>
>>>>> __________________________________________________
>>>>> Do You Yahoo!?
>>>>> Tired of spam?  Yahoo! Mail has the best spam protection around
>>>>> http://mail.yahoo.com
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>
>


Mime
View raw message