You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by be...@apache.org on 2014/07/13 14:37:11 UTC

[1/2] couch-replicator commit: updated refs/heads/1994-merge-rcouch to f594318

Repository: couchdb-couch-replicator
Updated Branches:
  refs/heads/1994-merge-rcouch e56dccf0b -> f594318ee


don't replicate removed document in a view changes


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/commit/04b6a2c6
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/tree/04b6a2c6
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/diff/04b6a2c6

Branch: refs/heads/1994-merge-rcouch
Commit: 04b6a2c643656349604144339935b979b86a150d
Parents: e56dccf
Author: benoitc <bc...@gmail.com>
Authored: Thu Jul 3 13:08:34 2014 +0200
Committer: benoitc <bc...@gmail.com>
Committed: Thu Jul 3 13:08:34 2014 +0200

----------------------------------------------------------------------
 src/couch_replicator.erl          |  6 ++++--
 src/couch_replicator_api_wrap.erl | 20 ++++++++++++++------
 src/couch_replicator_worker.erl   | 15 +++++++++------
 3 files changed, 27 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/04b6a2c6/src/couch_replicator.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator.erl b/src/couch_replicator.erl
index 10aaf37..b9471a9 100644
--- a/src/couch_replicator.erl
+++ b/src/couch_replicator.erl
@@ -635,8 +635,10 @@ spawn_changes_reader(StartSeq, Db, ChangesQueue, Options) ->
 
 read_changes(StartSeq, Db, ChangesQueue, Options) ->
     try
-        couch_replicator_api_wrap:changes_since(Db, all_docs, StartSeq,
-            fun(#doc_info{high_seq = Seq, id = Id} = DocInfo) ->
+        couch_replicator_api_wrap:changes_since(Db, all_docs, StartSeq, fun
+            (#doc_info{high_seq = Seq, revs = []}) ->
+                put(last_seq, Seq);
+            (#doc_info{high_seq = Seq, id = Id} = DocInfo) ->
                 case Id of
                 <<>> ->
                     % Previous CouchDB releases had a bug which allowed a doc

http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/04b6a2c6/src/couch_replicator_api_wrap.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator_api_wrap.erl b/src/couch_replicator_api_wrap.erl
index 1e0e660..5508179 100644
--- a/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator_api_wrap.erl
@@ -810,12 +810,20 @@ parse_changes_line(object_start, UserFun) ->
     end.
 
 json_to_doc_info({Props}) ->
-    RevsInfo = lists:map(
-        fun({Change}) ->
-            Rev = couch_doc:parse_rev(get_value(<<"rev">>, Change)),
-            Del = (true =:= get_value(<<"deleted">>, Change)),
-            #rev_info{rev=Rev, deleted=Del}
-        end, get_value(<<"changes">>, Props)),
+    RevsInfo0 = lists:map(fun({Change}) ->
+                    Rev = couch_doc:parse_rev(get_value(<<"rev">>, Change)),
+                    Del = (true =:= get_value(<<"deleted">>, Change)),
+                    #rev_info{rev=Rev, deleted=Del}
+            end, get_value(<<"changes">>, Props)),
+
+    RevsInfo = case get_value(<<"removed">>, Props) of
+        true ->
+            [_ | RevsInfo1] = RevsInfo0,
+            RevsInfo1;
+        _ ->
+            RevsInfo0
+    end,
+
     #doc_info{
         id = get_value(<<"id">>, Props),
         high_seq = get_value(<<"seq">>, Props),

http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/04b6a2c6/src/couch_replicator_worker.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator_worker.erl b/src/couch_replicator_worker.erl
index 0f65900..6fca26a 100644
--- a/src/couch_replicator_worker.erl
+++ b/src/couch_replicator_worker.erl
@@ -486,12 +486,15 @@ flush_doc(Target, #doc{id = Id, revs = {Pos, [RevId | _]}} = Doc) ->
 
 
 find_missing(DocInfos, Target) ->
-    {IdRevs, AllRevsCount} = lists:foldr(
-        fun(#doc_info{id = Id, revs = RevsInfo}, {IdRevAcc, CountAcc}) ->
-            Revs = [Rev || #rev_info{rev = Rev} <- RevsInfo],
-            {[{Id, Revs} | IdRevAcc], CountAcc + length(Revs)}
-        end,
-        {[], 0}, DocInfos),
+    {IdRevs, AllRevsCount} = lists:foldr(fun
+                (#doc_info{revs = []}, {IdRevAcc, CountAcc}) ->
+                    {IdRevAcc, CountAcc};
+                (#doc_info{id = Id, revs = RevsInfo}, {IdRevAcc, CountAcc}) ->
+                    Revs = [Rev || #rev_info{rev = Rev} <- RevsInfo],
+                    {[{Id, Revs} | IdRevAcc], CountAcc + length(Revs)}
+            end, {[], 0}, DocInfos),
+
+
     {ok, Missing} = couch_replicator_api_wrap:get_missing_revs(Target, IdRevs),
     MissingRevsCount = lists:foldl(
         fun({_Id, MissingRevs, _PAs}, Acc) -> Acc + length(MissingRevs) end,


[2/2] couch-replicator commit: updated refs/heads/1994-merge-rcouch to f594318

Posted by be...@apache.org.
when the key is removed don't get anything.


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/commit/f594318e
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/tree/f594318e
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/diff/f594318e

Branch: refs/heads/1994-merge-rcouch
Commit: f594318eea9825a03dd263ff9fd4bb111420eb61
Parents: 04b6a2c
Author: benoitc <bc...@gmail.com>
Authored: Thu Jul 3 20:40:47 2014 +0200
Committer: benoitc <bc...@gmail.com>
Committed: Thu Jul 3 20:40:47 2014 +0200

----------------------------------------------------------------------
 src/couch_replicator_api_wrap.erl | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/f594318e/src/couch_replicator_api_wrap.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator_api_wrap.erl b/src/couch_replicator_api_wrap.erl
index 5508179..b7b4b86 100644
--- a/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator_api_wrap.erl
@@ -817,11 +817,8 @@ json_to_doc_info({Props}) ->
             end, get_value(<<"changes">>, Props)),
 
     RevsInfo = case get_value(<<"removed">>, Props) of
-        true ->
-            [_ | RevsInfo1] = RevsInfo0,
-            RevsInfo1;
-        _ ->
-            RevsInfo0
+        true -> [];
+        _ -> RevsInfo0
     end,
 
     #doc_info{