You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2017/04/09 04:02:42 UTC
[couchdb] 01/04: [fixup] use m,f,a in cluster event listener
This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch 63012-scheduler
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 676fd79017780d871a4f91bf3d6fe5b2a16009ee
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Sat Apr 8 02:09:47 2017 -0400
[fixup] use m,f,a in cluster event listener
---
src/couch_replicator/src/couch_replicator_clustering.erl | 11 +++++------
src/couch_replicator/src/couch_replicator_db_changes.erl | 9 ++++++++-
src/couch_replicator/src/couch_replicator_doc_processor.erl | 12 ++++++++++--
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/src/couch_replicator/src/couch_replicator_clustering.erl b/src/couch_replicator/src/couch_replicator_clustering.erl
index 4a6abd7..285be37 100644
--- a/src/couch_replicator/src/couch_replicator_clustering.erl
+++ b/src/couch_replicator/src/couch_replicator_clustering.erl
@@ -30,7 +30,7 @@
% public API
-export([start_link/0, owner/2, is_stable/0]).
--export([link_cluster_event_listener/1]).
+-export([link_cluster_event_listener/3]).
% gen_server callbacks
-export([init/1, handle_call/3, handle_info/2, handle_cast/2,
@@ -81,12 +81,11 @@ is_stable() ->
gen_server:call(?MODULE, is_stable).
-% Convenience function for gen_servers to subscribe to {cluster, stable} and
-% {cluster, unstable} events from couch_replicator clustering module.
--spec link_cluster_event_listener(pid()) -> pid().
-link_cluster_event_listener(GenServer) when is_pid(GenServer) ->
+-spec link_cluster_event_listener(atom(), atom(), list()) -> pid().
+link_cluster_event_listener(Mod, Fun, Args)
+ when is_atom(Mod), is_atom(Fun), is_list(Args) ->
CallbackFun =
- fun(Event = {cluster, _}) -> gen_server:cast(GenServer, Event);
+ fun(Event = {cluster, _}) -> erlang:apply(Mod, Fun, Args ++ [Event]);
(_) -> ok
end,
{ok, Pid} = couch_replicator_notifier:start_link(CallbackFun),
diff --git a/src/couch_replicator/src/couch_replicator_db_changes.erl b/src/couch_replicator/src/couch_replicator_db_changes.erl
index 924c24f..dd4be64 100644
--- a/src/couch_replicator/src/couch_replicator_db_changes.erl
+++ b/src/couch_replicator/src/couch_replicator_db_changes.erl
@@ -18,6 +18,7 @@
-export([init/1, handle_call/3, handle_info/2, handle_cast/2]).
-export([code_change/3, terminate/2]).
+-export([notify_cluster_event/2]).
-record(state, {
event_listener :: pid(),
@@ -25,6 +26,11 @@
}).
+-spec notify_cluster_event(pid(), {cluster, any()}) -> ok.
+notify_cluster_event(Server, {cluster, _} = Event) ->
+ gen_server:cast(Server, Event).
+
+
-spec start_link() ->
{ok, pid()} | ignore | {error, any()}.
start_link() ->
@@ -32,7 +38,8 @@ start_link() ->
init([]) ->
- EvtPid = couch_replicator_clustering:link_cluster_event_listener(self()),
+ EvtPid = couch_replicator_clustering:link_cluster_event_listener(?MODULE,
+ notify_cluster_event, [self()]),
State = #state{event_listener = EvtPid, mdb_changes = nil},
case couch_replicator_clustering:is_stable() of
true ->
diff --git a/src/couch_replicator/src/couch_replicator_doc_processor.erl b/src/couch_replicator/src/couch_replicator_doc_processor.erl
index 9c2e2b3..d22ac26 100644
--- a/src/couch_replicator/src/couch_replicator_doc_processor.erl
+++ b/src/couch_replicator/src/couch_replicator_doc_processor.erl
@@ -17,6 +17,7 @@
-export([docs/1, doc/2]).
-export([update_docs/0]).
-export([get_worker_ref/1]).
+-export([notify_cluster_event/2]).
% multidb changes callback
-export([db_created/2, db_deleted/2, db_found/2, db_change/3]).
@@ -101,6 +102,12 @@ get_worker_ref({DbName, DocId}) when is_binary(DbName), is_binary(DocId) ->
end.
+% Cluster membership change notification callback
+-spec notify_cluster_event(pid(), {cluster, any()}) -> ok.
+notify_cluster_event(Server, {cluster, _} = Event) ->
+ gen_server:cast(Server, Event).
+
+
% Private helpers for multidb changes API, these updates into the doc
% processor gen_server
@@ -179,7 +186,8 @@ start_link() ->
init([]) ->
?MODULE = ets:new(?MODULE, [ordered_set, named_table, {keypos, #rdoc.id}]),
- couch_replicator_clustering:link_cluster_event_listener(self()),
+ couch_replicator_clustering:link_cluster_event_listener(?MODULE,
+ notify_cluster_event, [self()]),
{ok, nil}.
@@ -818,7 +826,7 @@ setup() ->
meck:expect(config, get, fun(_, _, Default) -> Default end),
meck:expect(config, listen_for_changes, 2, ok),
meck:expect(couch_replicator_clustering, owner, 2, node()),
- meck:expect(couch_replicator_clustering, link_cluster_event_listener, 1, ok),
+ meck:expect(couch_replicator_clustering, link_cluster_event_listener, 3, ok),
meck:expect(couch_replicator_doc_processor_worker, spawn_worker, 4, pid),
meck:expect(couch_replicator_scheduler, remove_job, 1, ok),
meck:expect(couch_replicator_docs, remove_state_fields, 2, ok),
--
To stop receiving notification emails like this one, please contact
"commits@couchdb.apache.org" <co...@couchdb.apache.org>.