summaryrefslogtreecommitdiff
path: root/src/delegate.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-06-26 12:59:33 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-06-26 12:59:33 +0100
commit06a8b1ffcf633ba10c177736db33775636c9a20c (patch)
tree42b83a1cdac95687b1b6e0d0f168738015922a20 /src/delegate.erl
parent9f586c509a82b9999034634a30d94f1315967776 (diff)
downloadrabbitmq-server-git-06a8b1ffcf633ba10c177736db33775636c9a20c.tar.gz
Do the monitoring on the correct node(!) and remove all that nonsense about node-wide monitoring.
Diffstat (limited to 'src/delegate.erl')
-rw-r--r--src/delegate.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/delegate.erl b/src/delegate.erl
index a205f2f157..475b087f47 100644
--- a/src/delegate.erl
+++ b/src/delegate.erl
@@ -119,15 +119,19 @@ invoke_no_result(Pids, Fun) when is_list(Pids) ->
safe_invoke(LocalPids, Fun), %% must not die
ok.
+monitor(Pid) when node(Pid) =:= node() ->
+ erlang:monitor(process, Pid);
monitor(Pid) ->
Node = node(Pid),
Name = delegate(Pid, [Node]),
- gen_server2:call({Name, Node}, {monitor, self(), Pid}, infinity).
+ gen_server2:call(Name, {monitor, self(), Pid}, infinity).
+demonitor(Pid, Ref) when node(Pid) =:= node() ->
+ erlang:demonitor(Ref, [flush]);
demonitor(Pid, Ref) ->
Node = node(Pid),
Name = delegate(Pid, [Node]),
- gen_server2:call({Name, Node}, {demonitor, Ref}, infinity).
+ gen_server2:call(Name, {demonitor, Ref}, infinity).
call(PidOrPids, Msg) ->
invoke(PidOrPids, fun (P) -> gen_server2:call(P, Msg, infinity) end).