I commented on the issue: It looks like we are not handling a 404 in the function below, especially thefun(200, Headers, StreamDataFun) -> bit (that’s like 171 in couch_replicator_api_wrap).
I’m not too familiar with that code, maybe one of Adam, Bob, Filipe, Benoit
could have a look?
cc dev@
open_doc_revs(#httpdb{} = HttpDb, Id, Revs, Options, Fun, Acc) ->
Path = encode_doc_id(Id),
QArgs = options_to_query_args(
HttpDb, Path, [revs, {open_revs, Revs} | Options]),
Self = self(),
Streamer = spawn_link(fun() ->
send_req(
HttpDb,
[{path, Path}, {qs, QArgs},
{ibrowse_options, [{stream_to, {self(), once}}]},
{headers, [{"Accept", "multipart/mixed"}]}],
fun(200, Headers, StreamDataFun) ->
remote_open_doc_revs_streamer_start(Self),
{<<"--">>, _, _} = couch_httpd:parse_multipart_request(
get_value("Content-Type", Headers),
StreamDataFun,
fun mp_parse_mixed/1)
end),
unlink(Self)
end),
receive
{started_open_doc_revs, Ref} ->
receive_docs_loop(Streamer, Fun, Id, Revs, Ref, Acc)
end;
On 29 Jan 2014, at 16:35 , Jens Alfke <[email protected]> wrote:
> A developer has reported a CouchDB 1.3 exception/crash replicating with the
> Couchbase Sync Gateway. They've attached the Erlang crash report, but those
> are about as readable to me as ancient Aramaic, or the logos* of black-metal
> bands :(
>
>
> https://github.com/couchbase/sync_gateway/issues/248#issuecomment-33523814
>
> Could someone who knows CouchDB take a look and give me a clue about what it
> might be taking exception [sic] to? In my experience, there are some areas
> where it gets very picky about parsing incoming data, for example the number
> of newlines at the end of a multipart body. If I had some idea what type of
> data it was reading when it barfed, that would help me figure this out...
>
> Thanks!
>
> —Jens
>
> * viz.:
> http://www.rottentomatoes.com/quiz/the-most-unreadable-metal-band-logos/
signature.asc
Description: Message signed with OpenPGP using GPGMail
