[ 
https://issues.apache.org/jira/browse/COUCHDB-1986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13944865#comment-13944865
 ] 

Nick North commented on COUCHDB-1986:
-------------------------------------

Sorry - I was not very clear. The problem was caused by me when adding my new 
code, and I fixed it before committing, so there's not much to point at now. 
But, in essence, the problem was with couch_doc:mp_parse_atts - the body_end 
clause needed to change from:

mp_parse_atts(body_end) ->
    fun mp_parse_atts/1.

to:

mp_parse_atts(body_end) ->
    receive {get_bytes, Ref, From} ->
        From ! {body_end, Ref, <<>>}
    end,
    fun mp_parse_atts/1.

to push the end-of-body information through. The change is necessary because, 
when attachment lengths become optional, you have to change from "parse the 
number of bytes specified as the attachment length" to "parse until you hit the 
end of the attachment, and then notify everyone that you have finished". The 
interesting thing is that the bad code sometimes worked, and sometimes didn't, 
depending on whether other circumstances caused a hung process to be killed (I 
think) - the actual document loading work had all been done, but the parser had 
not cleared up after itself, so kept a socket alive somewhere until the process 
died.

That's makes me wonder if something similar is happening here - the replication 
worked has finished, but the system is waiting for a "finished parsing" 
indicator that never turns up. If the same sort of thing is happening with the 
replicator, it would be around the couch_replicator_api_wrap:mp_parse_mixed/1 
function and the process it's communicating with. but that's as far as I have 
got so far.

> 04-replication-large-atts.t times out
> -------------------------------------
>
>                 Key: COUCHDB-1986
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1986
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions: 1.5.0
>            Reporter: Jan Lehnardt
>
> 04-replication-large-atts.t gets stuck around 558, sometimes a little earlier 
> or later, but it times out eventually, regardless of the timeout. I tried 
> doubling and such.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to