diff options
author | Emile Joubert <emile@rabbitmq.com> | 2011-12-14 14:55:52 +0000 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2011-12-14 14:55:52 +0000 |
commit | 7a5e343c3db182bc217aa4c9aaba3e89ad7e636d (patch) | |
tree | f5e230d5e66d0967686566b39095a78b97ebfbbf | |
parent | fc1d61f01f9b8a3ccfd2a508b0125c62dfe5ce81 (diff) | |
download | rabbitmq-server-7a5e343c3db182bc217aa4c9aaba3e89ad7e636d.tar.gz |
Updated definition of whereis_namebug24628
-rw-r--r-- | src/gen_server2.erl | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index c2215c37..49913d26 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -1079,7 +1079,7 @@ get_proc_name({local, Name}) -> exit(process_not_registered) end; get_proc_name({global, Name}) -> - case global:whereis_name(Name) of + case whereis_name(Name) of undefined -> exit(process_not_registered_globally); Pid when Pid =:= self() -> @@ -1101,7 +1101,7 @@ get_parent() -> name_to_pid(Name) -> case whereis(Name) of undefined -> - case global:whereis_name(Name) of + case whereis_name(Name) of undefined -> exit(could_not_find_registerd_name); Pid -> @@ -1111,6 +1111,20 @@ name_to_pid(Name) -> Pid end. +whereis_name(Name) -> + case ets:lookup(global_names, Name) of + [{_Name, Pid, _Method, _RPid, _Ref}] -> + if node(Pid) == node() -> + case is_process_alive(Pid) of + true -> Pid; + false -> undefined + end; + true -> + Pid + end; + [] -> undefined + end. + find_prioritisers(GS2State = #gs2_state { mod = Mod }) -> PrioriCall = function_exported_or_default( Mod, 'prioritise_call', 3, |