You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2010/10/04 13:08:15 UTC

svn commit: r1004196 - /couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl

Author: fdmanana
Date: Mon Oct  4 11:08:15 2010
New Revision: 1004196

URL: http://svn.apache.org/viewvc?rev=1004196&view=rev
Log:
New replicator: removing some duplicated code.

Modified:
    couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl

Modified: couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl
URL: http://svn.apache.org/viewvc/couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl?rev=1004196&r1=1004195&r2=1004196&view=diff
==============================================================================
--- couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl (original)
+++ couchdb/branches/new_replicator/src/couchdb/couch_replicator_doc_copiers.erl Mon Oct  4 11:08:15 2010
@@ -41,13 +41,13 @@ spawn_doc_copiers(Cp, Source, Target, Mi
 }).
 
 doc_copy_loop(CopierId, Cp, Source, Target, MissingRevsQueue) ->
-    case couch_work_queue:dequeue(MissingRevsQueue, ?DOC_BATCH_SIZE) of
+    Result = case couch_work_queue:dequeue(MissingRevsQueue, ?DOC_BATCH_SIZE) of
     closed ->
         ?LOG_DEBUG("Doc copier ~p got missing revs queue closed", [CopierId]),
-        ok;
+        stop;
 
     {ok, [{doc_id, _} | _] = DocIds} ->
-        DocAcc = lists:foldl(
+        Acc = lists:foldl(
             fun({doc_id, Id}, Acc) ->
                 ?LOG_DEBUG("Doc copier ~p got {doc_id, ~p}", [CopierId, Id]),
                 {ok, Acc2} = couch_api_wrap:open_doc_revs(
@@ -56,17 +56,10 @@ doc_copy_loop(CopierId, Cp, Source, Targ
                 Acc2
             end,
             #doc_acc{}, DocIds),
-        maybe_send_stat(DocAcc#doc_acc.read, #rep_stats.docs_read, Cp),
-        #doc_acc{written = W, wfail = Wf} = bulk_write_docs(DocAcc, Target),
-        #doc_acc{written = W, wfail = Wf, seqs = SeqsDone} =
-            bulk_write_docs(DocAcc, Target),
-        seqs_done(SeqsDone, Cp),
-        maybe_send_stat(W, #rep_stats.docs_written, Cp),
-        maybe_send_stat(Wf, #rep_stats.doc_write_failures, Cp),
-        doc_copy_loop(CopierId, Cp, Source, Target, MissingRevsQueue);
+        {Source, Acc};
 
     {ok, IdRevList} ->
-        {Source2, DocAcc} = lists:foldl(
+        lists:foldl(
             fun({Id, Revs, PossibleAncestors, Seq} = IdRev, {SrcDb, BulkAcc}) ->
                 ?LOG_DEBUG("Doc copier ~p got ~p", [CopierId, IdRev]),
                 SrcDb2 = couch_api_wrap:maybe_reopen_db(SrcDb, Seq),
@@ -76,14 +69,19 @@ doc_copy_loop(CopierId, Cp, Source, Targ
                     BulkAcc),
                 {SrcDb2, BulkAcc2}
             end,
-            {Source, #doc_acc{}}, IdRevList),
+            {Source, #doc_acc{}}, IdRevList)
+    end,
+    case Result of
+    {Source2, DocAcc} ->
         maybe_send_stat(DocAcc#doc_acc.read, #rep_stats.docs_read, Cp),
         #doc_acc{written = W, wfail = Wf, seqs = SeqsDone} =
             bulk_write_docs(DocAcc, Target),
         seqs_done(SeqsDone, Cp),
         maybe_send_stat(W, #rep_stats.docs_written, Cp),
         maybe_send_stat(Wf, #rep_stats.doc_write_failures, Cp),
-        doc_copy_loop(CopierId, Cp, Source2, Target, MissingRevsQueue)
+        doc_copy_loop(CopierId, Cp, Source2, Target, MissingRevsQueue);
+    stop ->
+        ok
     end.