incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Filipe David Manana <fdman...@apache.org>
Subject Re: Failure on source commit: {error,undefined}
Date Fri, 23 Dec 2011 18:58:35 GMT
On Friday, December 23, 2011, Robert Hailey <couchdb@osndok.com> wrote:
>
> On 2011/12/21 (Dec), at 3:52 PM, Marty Schoch wrote:
>
>> Hi Robert,
>
> Hey Marty, thanks for you reply.
>
>> If your issue only affects Couchbase Mobile, you may get better
>> support discussing the issues here:
>>
>> https://groups.google.com/forum/#!forum/mobile-couchbase
>
> I've isolated it to couchdb, and am positive it will (or would have)
effected future releases too; the complicating factor is that couchbase
uses pre-release versions of couchdb.
>
>> 2.  If you access the root URL of the Couchbase Mobile you should see
>> a response like:
>>
>> {
>> "couchdb": "Welcome",
>> "version": "1.2.0a-7b47329-git"
>> }
>
> I tried doing this, but I think couchbase is substituting it's own
version number here; with ios I get:
>
> {
>        "couchdb":"Welcome",
>        "version":"2.0.0-beta"
> }
>
> Which to me is non-sensical, because there are no tags resembling "2.0.0"
in couchdb, and not very helpful (because there is no hash like in your
example)...
>
>> 3.  Couchbase Mobile is completely open source.  The binaries we ship
>> are built from the source on github.  Some of the confusion may be
>> that Couchbase Mobile includes more than just CouchDB.
>
> I think that is much of the confusion, along with unfamiliarity with the
build system in use.
>
>> 4.  At the moment I'm not aware of any other implementations.
>
> I've found some references to others doing what I am:
>
>
http://stackoverflow.com/questions/8309521/using-couchdb-pull-replication-from-a-read-only-server
>
http://mail-archives.apache.org/mod_mbox/couchdb-user/201106.mbox/%3C4DFFB8BD.2010508%40gmail.com%3E
>
http://thanksmister.com/2009/03/28/http-status-201-causing-flex-2032-error-in-ie-only/
>
> And.... after several hours of reading erlang how-tos & trying to
"decode" two functions, I found my error.
>
> In:
>
> src/couch_replicator/src/couch_replicator_api_wrap.erl (about line 126)
>
> ensure_full_commit(#httpdb{} = Db) ->
>    send_req(
>        Db,
>        [{method, post}, {path, "_ensure_full_commit"},
>            {headers, [{"Content-Type", "application/json"}]}],
>        fun(201, _, {Props}) ->
>            {ok, get_value(<<"instance_start_time">>, Props)};
>        (_, _, {Props}) ->
>            {error, get_value(<<"error">>, Props)}
>        end);
>
> I found that the couchdb source expects a 201 http status, whereas the
docs I was following indicate a 200 status:
>
>
http://www.couchbase.org/sites/default/files/uploads/all/documentation/couchbase-api-db.html#couchbase-api-db_db-ensure-full-commit_post

The documentation is wrong, the success response code is 201 for
_ensure_full_commit
>
> So (if I understand the symptom of the "terrible error message") the
'undefined' was coming from a helper-function trying to extract a
non-existant error message (because it was successful, but did not match
the 201 code).
>
> I'm not sure what (if any) change needs to occur, but "undefined" is a
poor error message IMO. :)

Normally error responses have a json top level property named "error". I
don't recall seeing many for _ensure_full_commit. If it's easy for you to
reproduce it, can you tell what the server is sending by using a sniffer?

Thanks

>
> --
> Robert Hailey
>
>

-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message