summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Dionne <bob@cloudant.com>2012-08-07 12:42:36 -0400
committerAdam Kocoloski <adam@cloudant.com>2013-10-02 11:59:02 -0400
commit962ce087bfac80e2d721b679fee4fe1568a4d362 (patch)
tree691bd0b9d8f9d8c4862afe852619eeb1912b44a2
parent82a103ba71e8ccc9efb24d97b763517978e63c22 (diff)
downloadcouchdb-962ce087bfac80e2d721b679fee4fe1568a4d362.tar.gz
Use latest=true when retrieving revisions
This allows the replicator to keep up with revisions that may have occured after missing_revs was called. BugzID: 14241
-rw-r--r--src/couch_replicator/src/couch_replicator_api_wrap.erl2
-rw-r--r--src/couch_replicator/src/couch_replicator_worker.erl4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/couch_replicator/src/couch_replicator_api_wrap.erl b/src/couch_replicator/src/couch_replicator_api_wrap.erl
index 90cfa8e5a..cd69e590e 100644
--- a/src/couch_replicator/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator/src/couch_replicator_api_wrap.erl
@@ -465,6 +465,8 @@ options_to_query_args([revs | Rest], Acc) ->
options_to_query_args(Rest, [{"revs", "true"} | Acc]);
options_to_query_args([{open_revs, all} | Rest], Acc) ->
options_to_query_args(Rest, [{"open_revs", "all"} | Acc]);
+options_to_query_args([latest | Rest], Acc) ->
+ options_to_query_args(Rest, [{"latest", "true"} | Acc]);
options_to_query_args([{open_revs, Revs} | Rest], Acc) ->
JsonRevs = ?b2l(?JSON_ENCODE(couch_doc:revs_to_strs(Revs))),
options_to_query_args(Rest, [{"open_revs", JsonRevs} | Acc]).
diff --git a/src/couch_replicator/src/couch_replicator_worker.erl b/src/couch_replicator/src/couch_replicator_worker.erl
index e8a3570ba..d66d47805 100644
--- a/src/couch_replicator/src/couch_replicator_worker.erl
+++ b/src/couch_replicator/src/couch_replicator_worker.erl
@@ -296,13 +296,13 @@ spawn_doc_reader(Source, Target, FetchParams) ->
fetch_doc(Source, {Id, Revs, PAs}, DocHandler, Acc) ->
try
couch_replicator_api_wrap:open_doc_revs(
- Source, Id, Revs, [{atts_since, PAs}], DocHandler, Acc)
+ Source, Id, Revs, [{atts_since, PAs}, latest], DocHandler, Acc)
catch
throw:{missing_stub, _} ->
?LOG_ERROR("Retrying fetch and update of document `~s` due to out of "
"sync attachment stubs. Missing revisions are: ~s",
[Id, couch_doc:revs_to_strs(Revs)]),
- couch_replicator_api_wrap:open_doc_revs(Source, Id, Revs, [], DocHandler, Acc)
+ couch_replicator_api_wrap:open_doc_revs(Source, Id, Revs, [latest], DocHandler, Acc)
end.