[ https://issues.apache.org/jira/browse/COUCHDB-1340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13152065#comment-13152065 ]
Filipe Manana commented on COUCHDB-1340: ---------------------------------------- Alex, that's great news :) I found that the problem is mochiweb (our http server) doesn't allow request lines to exceed 8192 characters. We were accounting for this, but ignoring the extra characters account by "GET " and the trailing " HTTP/1.1\r\n" in the first request line. So my final patch is now this: http://friendpaste.com/1TWqKb1Ac2hmKYh7VgNMLO Index: src/couchdb/couch_rep_reader.erl =================================================================== --- src/couchdb/couch_rep_reader.erl (revision 1177549) +++ src/couchdb/couch_rep_reader.erl (working copy) @@ -177,7 +177,7 @@ hd(State#state.opened_seqs). split_revlist(Rev, {[CurrentAcc|Rest], BaseLength, Length}) -> - case Length+size(Rev)+3 > 8192 of + case Length+size(Rev)+3 >= 8192 of false -> {[[Rev|CurrentAcc] | Rest], BaseLength, Length+size(Rev)+3}; true -> @@ -214,7 +214,9 @@ %% MochiWeb into multiple requests BaseQS = [{revs,true}, {latest,true}, {att_encoding_info,true}], BaseReq = DbS#http_db{resource=encode_doc_id(DocId), qs=BaseQS}, - BaseLength = length(couch_rep_httpc:full_url(BaseReq) ++ "&open_revs=[]"), + BaseLength = length( + "GET " ++ couch_rep_httpc:full_url(BaseReq) ++ + "&open_revs=[]" ++ " HTTP/1.1\r\n"), {RevLists, _, _} = lists:foldl(fun split_revlist/2, {[[]], BaseLength, BaseLength}, couch_doc:revs_to_strs(Revs)), Thanks for testing and helping debug it. > Replication: Invalid JSON reported > ---------------------------------- > > Key: COUCHDB-1340 > URL: https://issues.apache.org/jira/browse/COUCHDB-1340 > Project: CouchDB > Issue Type: Bug > Components: Replication > Affects Versions: 1.1.1 > Environment: CentOS 5.6 x86_64, Couchdb 1.1.1 (Patched for > COUCHDB-1333), spidermonkey 1.8.5, curl 7.21, erlang 14b03 > Reporter: Alex Markham > Labels: invalid, json > Attachments: 9c94ed0e23508f4ec3d18f8949c06a5b replicaton from > wireshark cut.txt, replication error wireshark.txt, source couch error.log, > target couch error.log > > > It seems our replication has stopped, reporting an error > [emulator] Error in process <0.21599.306> {{nocatch,{invalid_json,<<0 > bytes>>}},[{couch_util,json_decode,1},{couch_rep_reader,'-open_doc_revs/3-lc$^1/1-1-',1},{couch_rep_reader,'-open_doc_revs/3-lc$^1/1-1-',1},{couch_rep_reader,open_doc_revs,3},{couch_rep_reader,'-spawn_document_request/4-fun-0-'... > > It was all working until we upgraded some other couches in our replication > "web" from couch 1.0.3 to couch 1.1.1. We then set of database and view > compactions, and sometime overnight some of the replication links stopped. > I have curled the command myself, both as a multipart message and a single > json response (with header "Accept:application/json" ) and it can be parsed > correctly by Python simplejson - I have attached it here aswell - called > "troublecurl-redacted.txt" - though it is 18.8mb. The request takes about 6 > seconds. > I don't quite understand why it is reported as invalid JSON? Other reports > similar to this that I googled mentioned blank document ids, but I can't see > any of these. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira