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

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. :)

--
Robert Hailey

Reply via email to