summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2012-09-25 14:54:04 +0100
committerEmile Joubert <emile@rabbitmq.com>2012-09-25 14:54:04 +0100
commit55ba746dacd179f58482f4197fa375b55a3962f9 (patch)
treebeda09741633d881987ee6416784f391aeda8865
parent63e855d5070bee346571b0751953d5d2cbbda1e2 (diff)
parenta1ff10f18797242049fdeb8222c0ef6e9eecbbe9 (diff)
downloadrabbitmq-server-55ba746dacd179f58482f4197fa375b55a3962f9.tar.gz
Merged bug25145 into default
-rw-r--r--src/pmon.erl32
-rw-r--r--src/rabbit_node_monitor.erl2
2 files changed, 18 insertions, 16 deletions
diff --git a/src/pmon.erl b/src/pmon.erl
index 45786577..1aeebb72 100644
--- a/src/pmon.erl
+++ b/src/pmon.erl
@@ -27,37 +27,39 @@
-opaque(?MODULE() :: dict()).
+-type(item() :: pid() | {atom(), node()}).
+
-spec(new/0 :: () -> ?MODULE()).
--spec(monitor/2 :: (pid(), ?MODULE()) -> ?MODULE()).
--spec(monitor_all/2 :: ([pid()], ?MODULE()) -> ?MODULE()).
--spec(demonitor/2 :: (pid(), ?MODULE()) -> ?MODULE()).
--spec(is_monitored/2 :: (pid(), ?MODULE()) -> boolean()).
--spec(erase/2 :: (pid(), ?MODULE()) -> ?MODULE()).
--spec(monitored/1 :: (?MODULE()) -> [pid()]).
+-spec(monitor/2 :: (item(), ?MODULE()) -> ?MODULE()).
+-spec(monitor_all/2 :: ([item()], ?MODULE()) -> ?MODULE()).
+-spec(demonitor/2 :: (item(), ?MODULE()) -> ?MODULE()).
+-spec(is_monitored/2 :: (item(), ?MODULE()) -> boolean()).
+-spec(erase/2 :: (item(), ?MODULE()) -> ?MODULE()).
+-spec(monitored/1 :: (?MODULE()) -> [item()]).
-spec(is_empty/1 :: (?MODULE()) -> boolean()).
-endif.
new() -> dict:new().
-monitor(Pid, M) ->
- case dict:is_key(Pid, M) of
+monitor(Item, M) ->
+ case dict:is_key(Item, M) of
true -> M;
- false -> dict:store(Pid, erlang:monitor(process, Pid), M)
+ false -> dict:store(Item, erlang:monitor(process, Item), M)
end.
-monitor_all(Pids, M) -> lists:foldl(fun monitor/2, M, Pids).
+monitor_all(Items, M) -> lists:foldl(fun monitor/2, M, Items).
-demonitor(Pid, M) ->
- case dict:find(Pid, M) of
+demonitor(Item, M) ->
+ case dict:find(Item, M) of
{ok, MRef} -> erlang:demonitor(MRef),
- dict:erase(Pid, M);
+ dict:erase(Item, M);
error -> M
end.
-is_monitored(Pid, M) -> dict:is_key(Pid, M).
+is_monitored(Item, M) -> dict:is_key(Item, M).
-erase(Pid, M) -> dict:erase(Pid, M).
+erase(Item, M) -> dict:erase(Item, M).
monitored(M) -> dict:fetch_keys(M).
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index 64c801f2..88037953 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -160,7 +160,7 @@ reset_cluster_status() ->
%%----------------------------------------------------------------------------
joined_cluster(Node, IsDiscNode) ->
- gen_server:cast(?SERVER, {rabbit_join, Node, IsDiscNode}).
+ gen_server:cast(?SERVER, {joined_cluster, Node, IsDiscNode}).
notify_joined_cluster() ->
cluster_multicall(joined_cluster, [node(), rabbit_mnesia:is_disc_node()]),