couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Hailey <couc...@osndok.com>
Subject Re: Failure on source commit: {error,undefined}
Date Fri, 23 Dec 2011 18:01:55 GMT

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


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