diff options
author | Fredrik Gustafsson <[email protected]> | 2013-04-15 11:57:40 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-04-15 11:57:40 +0200 |
commit | 8e236f7c5a0c6383e5f604a781e68b1685127e15 (patch) | |
tree | faf91cbdaa25d71b01e5bfddcfda7bb1d675e7c5 /lib/kernel/src/rpc.erl | |
parent | f7641c8aafecc7b54b3f6f226892f825ac19f63a (diff) | |
parent | c82e9fad33302ff24fdddbd50f110c06d4eb81d4 (diff) | |
download | otp-8e236f7c5a0c6383e5f604a781e68b1685127e15.tar.gz otp-8e236f7c5a0c6383e5f604a781e68b1685127e15.tar.bz2 otp-8e236f7c5a0c6383e5f604a781e68b1685127e15.zip |
Merge branch 'lh/demonitor-flush/OTP-11039' into maint
* lh/demonitor-flush/OTP-11039:
Use erlang:demonitor(Ref, [flush]) where applicable
Diffstat (limited to 'lib/kernel/src/rpc.erl')
-rw-r--r-- | lib/kernel/src/rpc.erl | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/lib/kernel/src/rpc.erl b/lib/kernel/src/rpc.erl index 7c965ca384..83e0b59cc2 100644 --- a/lib/kernel/src/rpc.erl +++ b/lib/kernel/src/rpc.erl @@ -388,13 +388,8 @@ server_call(Node, Name, ReplyWrapper, Msg) {'DOWN', Ref, _, _, _} -> {error, nodedown}; {ReplyWrapper, Node, Reply} -> - erlang:demonitor(Ref), - receive - {'DOWN', Ref, _, _, _} -> - Reply - after 0 -> - Reply - end + erlang:demonitor(Ref, [flush]), + Reply end end. @@ -501,17 +496,6 @@ start_monitor(Node, Name) -> {Node,erlang:monitor(process, {Name, Node})} end. -%% Cancels a monitor started with Ref=erlang:monitor(_, _), -%% i.e return value {Node, Ref} from start_monitor/2 above. -unmonitor(Ref) when is_reference(Ref) -> - erlang:demonitor(Ref), - receive - {'DOWN', Ref, _, _, _} -> - true - after 0 -> - true - end. - %% Call apply(M,F,A) on all nodes in parallel -spec multicall(Module, Function, Args) -> {ResL, BadNodes} when @@ -635,10 +619,10 @@ rec_nodes(Name, [{N,R} | Tail], Badnodes, Replies) -> rec_nodes(Name, Tail, [N|Badnodes], Replies); {?NAME, N, {nonexisting_name, _}} -> %% used by sbcast() - unmonitor(R), + erlang:demonitor(R, [flush]), rec_nodes(Name, Tail, [N|Badnodes], Replies); {Name, N, Reply} -> %% Name is bound !!! - unmonitor(R), + erlang:demonitor(R, [flush]), rec_nodes(Name, Tail, Badnodes, [Reply|Replies]) end. |