You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2016/11/15 00:02:57 UTC

[2/3] fabric commit: updated refs/heads/master to f427ad0

Compatibility clause for the record upgrade


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

Branch: refs/heads/master
Commit: bed5c67f9633d2837aa51c1aeb078fc671fa1e27
Parents: a8e0e95
Author: ILYA Khlopotov <ii...@apache.org>
Authored: Mon Nov 14 13:13:11 2016 -0800
Committer: ILYA Khlopotov <ii...@apache.org>
Committed: Mon Nov 14 13:47:05 2016 -0800

----------------------------------------------------------------------
 src/fabric_rpc.erl  | 22 ++++++++++-------
 src/fabric_util.erl | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/bed5c67f/src/fabric_rpc.erl
----------------------------------------------------------------------
diff --git a/src/fabric_rpc.erl b/src/fabric_rpc.erl
index 9c7d518..b59c61e 100644
--- a/src/fabric_rpc.erl
+++ b/src/fabric_rpc.erl
@@ -92,18 +92,22 @@ changes(DbName, Options, StartVector, DbOptions) ->
         rexi:stream_last(Error)
     end.
 
-all_docs(DbName, Options, #mrargs{keys=undefined} = Args0) ->
-    set_io_priority(DbName, Options),
-    Args = fix_skip_and_limit(Args0),
-    {ok, Db} = get_or_create_db(DbName, Options),
-    VAcc0 = #vacc{db=Db},
-    couch_mrview:query_all_docs(Db, Args, fun view_cb/2, VAcc0).
+all_docs(DbName, Options, Args0) ->
+    case fabric_util:upgrade_mrargs(Args0) of
+        #mrargs{keys=undefined} ->
+            set_io_priority(DbName, Options),
+            Args = fix_skip_and_limit(Args0),
+            {ok, Db} = get_or_create_db(DbName, Options),
+            VAcc0 = #vacc{db=Db},
+            couch_mrview:query_all_docs(Db, Args, fun view_cb/2, VAcc0)
+    end.
 
 update_mrview(DbName, {DDocId, Rev}, ViewName, Args0) ->
     {ok, DDoc} = ddoc_cache:open_doc(mem3:dbname(DbName), DDocId, Rev),
     couch_util:with_db(DbName, fun(Db) ->
         UpdateSeq = couch_db:get_update_seq(Db),
-        {ok, Pid, _} = couch_mrview:get_view_index_pid(Db, DDoc, ViewName,                                                Args0),
+        {ok, Pid, _} = couch_mrview:get_view_index_pid(
+            Db, DDoc, ViewName, fabric_util:upgrade_mrargs(Args0)),
         couch_index:get_state(Pid, UpdateSeq)
     end).
 
@@ -116,7 +120,7 @@ map_view(DbName, {DDocId, Rev}, ViewName, Args0, DbOptions) ->
     map_view(DbName, DDoc, ViewName, Args0, DbOptions);
 map_view(DbName, DDoc, ViewName, Args0, DbOptions) ->
     set_io_priority(DbName, DbOptions),
-    Args = fix_skip_and_limit(Args0),
+    Args = fix_skip_and_limit(fabric_util:upgrade_mrargs(Args0)),
     {ok, Db} = get_or_create_db(DbName, DbOptions),
     VAcc0 = #vacc{db=Db},
     couch_mrview:query_view(Db, DDoc, ViewName, Args, fun view_cb/2, VAcc0).
@@ -130,7 +134,7 @@ reduce_view(DbName, {DDocId, Rev}, ViewName, Args0, DbOptions) ->
     reduce_view(DbName, DDoc, ViewName, Args0, DbOptions);
 reduce_view(DbName, DDoc, ViewName, Args0, DbOptions) ->
     set_io_priority(DbName, DbOptions),
-    Args = fix_skip_and_limit(Args0),
+    Args = fix_skip_and_limit(fabric_util:upgrade_mrargs(Args0)),
     {ok, Db} = get_or_create_db(DbName, DbOptions),
     VAcc0 = #vacc{db=Db},
     couch_mrview:query_view(Db, DDoc, ViewName, Args, fun reduce_cb/2, VAcc0).

http://git-wip-us.apache.org/repos/asf/couchdb-fabric/blob/bed5c67f/src/fabric_util.erl
----------------------------------------------------------------------
diff --git a/src/fabric_util.erl b/src/fabric_util.erl
index 17e9c1e..e6dd86e 100644
--- a/src/fabric_util.erl
+++ b/src/fabric_util.erl
@@ -19,12 +19,14 @@
 -export([stream_start/2, stream_start/4]).
 -export([log_timeout/2, remove_done_workers/2]).
 -export([is_users_db/1, is_replicator_db/1, fake_db/2]).
+-export([upgrade_mrargs/1]).
 
 -compile({inline, [{doc_id_and_rev,1}]}).
 
 -include_lib("fabric/include/fabric.hrl").
 -include_lib("mem3/include/mem3.hrl").
 -include_lib("couch/include/couch_db.hrl").
+-include_lib("couch_mrview/include/couch_mrview.hrl").
 -include_lib("eunit/include/eunit.hrl").
 
 remove_down_workers(Workers, BadNode) ->
@@ -308,3 +310,63 @@ kv(Item, Count) ->
 
 doc_id_and_rev(#doc{id=DocId, revs={RevNum, [RevHash|_]}}) ->
     {DocId, {RevNum, RevHash}}.
+
+
+upgrade_mrargs(#mrargs{} = Args) ->
+    Args;
+
+upgrade_mrargs({mrargs,
+        ViewType,
+        Reduce,
+        PreflightFun,
+        StartKey,
+        StartKeyDocId,
+        EndKey,
+        EndKeyDocId,
+        Keys,
+        Direction,
+        Limit,
+        Skip,
+        GroupLevel,
+        Group,
+        Stable,
+        Update,
+        MultiGet,
+        InclusiveEnd,
+        IncludeDocs,
+        DocOptions,
+        UpdateSeq,
+        Conflicts,
+        Callback,
+        Sorted,
+        Extra}) ->
+    Stale = case {Stable, Update} of
+            {true, false} -> ok;
+            {true, lazy} -> update_after;
+            {_, _} -> false
+    end,
+    #mrargs{
+        view_type = ViewType,
+        reduce = Reduce,
+        preflight_fun = PreflightFun,
+        start_key = StartKey,
+        start_key_docid = StartKeyDocId,
+        end_key = EndKey,
+        end_key_docid = EndKeyDocId,
+        keys = Keys,
+        direction = Direction,
+        limit = Limit,
+        skip = Skip,
+        group_level = GroupLevel,
+        group = Group,
+        stale = Stale,
+        multi_get = MultiGet,
+        inclusive_end = InclusiveEnd,
+        include_docs = IncludeDocs,
+        doc_options = DocOptions,
+        update_seq = UpdateSeq,
+        conflicts = Conflicts,
+        callback = Callback,
+        sorted = Sorted,
+        extra = Extra
+    }.