diff options
author | Emile Joubert <emile@rabbitmq.com> | 2012-09-25 14:54:04 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2012-09-25 14:54:04 +0100 |
commit | 55ba746dacd179f58482f4197fa375b55a3962f9 (patch) | |
tree | beda09741633d881987ee6416784f391aeda8865 | |
parent | 63e855d5070bee346571b0751953d5d2cbbda1e2 (diff) | |
parent | a1ff10f18797242049fdeb8222c0ef6e9eecbbe9 (diff) | |
download | rabbitmq-server-55ba746dacd179f58482f4197fa375b55a3962f9.tar.gz |
Merged bug25145 into default
-rw-r--r-- | src/pmon.erl | 32 | ||||
-rw-r--r-- | src/rabbit_node_monitor.erl | 2 |
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()]), |