couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <...@apache.org>
Subject Re: 412 on update
Date Thu, 23 Oct 2008 10:12:39 GMT

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
--
>
>
>
>>> 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