You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Adam Kocoloski (JIRA)" <ji...@apache.org> on 2013/10/02 20:03:42 UTC
[jira] [Commented] (COUCHDB-1901) Replicator needs to retry
multipart requests atomically
[ 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)