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

Adam Kocoloski commented on COUCHDB-1901:
-----------------------------------------

I pushed a pull request at https://github.com/apache/couchdb/pull/95 which 
includes the work from the aforementioned Cloudant PR as well as some earlier 
fixes by [~paul.joseph.davis] regarding connection handling in the multipart 
workflow.

> Replicator needs to retry multipart requests atomically
> -------------------------------------------------------
>
>                 Key: COUCHDB-1901
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1901
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Replication
>            Reporter: Adam Kocoloski
>            Assignee: Adam Kocoloski
>             Fix For: 1.5.0
>
>
> couch_replicator_httpc's retry mechanism interacts poorly with the multipart 
> requests we use to transfer attachments during replication.  In the case of 
> PUTs, the replicator will retry a request even though it has already streamed 
> part of the request body.  For GETs, it can potentially interleave body data 
> from the original response and the retried one.
> I put together a fix at https://github.com/cloudant/couch_replicator/pull/36 
> that disables the default httpc client retry mechanism for multipart requests 
> and manages the retry logic "atomically"; i.e., it retries the original GET 
> request if the GET or PUT fails, and it ensures that the original GET request 
> is properly terminated during the retry.  I'll push a version of that patch 
> to the Apache repo now.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to