[ 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