diff options
author | Paul J. Davis <paul.joseph.davis@gmail.com> | 2018-07-03 15:02:58 +0200 |
---|---|---|
committer | Garren Smith <garren.smith@gmail.com> | 2018-08-06 09:02:49 +0200 |
commit | ef2683a747a4abcc33a0db697047c8bc574b5354 (patch) | |
tree | 1e2dedd63fb6178fff0084f097caee3a948283ad | |
parent | 0cbaefcaceff750c46ea612322fa1aa02d37c87e (diff) | |
download | couchdb-ef2683a747a4abcc33a0db697047c8bc574b5354.tar.gz |
[WIP] Configurable callback for fabric_rpc workers
-rw-r--r-- | src/fabric/src/fabric_rpc.erl | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/fabric/src/fabric_rpc.erl b/src/fabric/src/fabric_rpc.erl index 60526f495..ef4092d56 100644 --- a/src/fabric/src/fabric_rpc.erl +++ b/src/fabric/src/fabric_rpc.erl @@ -100,8 +100,8 @@ all_docs(DbName, Options, Args0) -> set_io_priority(DbName, Options), Args = fix_skip_and_limit(Args1), {ok, Db} = get_or_create_db(DbName, Options), - VAcc0 = #vacc{db=Db}, - couch_mrview:query_all_docs(Db, Args, fun view_cb/2, VAcc0) + CB = get_view_cb(Args), + couch_mrview:query_all_docs(Db, Args, CB, Args) end. update_mrview(DbName, {DDocId, Rev}, ViewName, Args0) -> @@ -124,8 +124,8 @@ map_view(DbName, DDoc, ViewName, Args0, DbOptions) -> set_io_priority(DbName, DbOptions), 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). + CB = get_view_cb(Args), + couch_mrview:query_view(Db, DDoc, ViewName, Args, CB, Args). %% @equiv reduce_view(DbName, DDoc, ViewName, Args0) reduce_view(DbName, DDocInfo, ViewName, Args0) -> @@ -303,6 +303,17 @@ get_or_create_db(DbName, Options) -> couch_db:open_int(DbName, [{create_if_missing, true} | Options]). +get_view_cb(#mrargs{extra = Options}) -> + case couch_util:get_value(callback, Options) of + {Mod, Fun} when is_atom(Mod), is_atom(Fun) -> + fun Mod:Fun/2; + _ -> + fun view_cb/2 + end; +get_view_cb(_) -> + fun view_cb/2. + + view_cb({meta, Meta}, Acc) -> % Map function starting ok = rexi:stream2({meta, Meta}), |