Skip to content

Commit 28a7ad1

Browse files
author
Emile Joubert
committed
Updated definition of whereis_name
1 parent 0d3001e commit 28a7ad1

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/gen_server2.erl

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,7 +1079,7 @@ get_proc_name({local, Name}) ->
10791079
exit(process_not_registered)
10801080
end;
10811081
get_proc_name({global, Name}) ->
1082-
case global:whereis_name(Name) of
1082+
case whereis_name(Name) of
10831083
undefined ->
10841084
exit(process_not_registered_globally);
10851085
Pid when Pid =:= self() ->
@@ -1101,7 +1101,7 @@ get_parent() ->
11011101
name_to_pid(Name) ->
11021102
case whereis(Name) of
11031103
undefined ->
1104-
case global:whereis_name(Name) of
1104+
case whereis_name(Name) of
11051105
undefined ->
11061106
exit(could_not_find_registerd_name);
11071107
Pid ->
@@ -1111,6 +1111,20 @@ name_to_pid(Name) ->
11111111
Pid
11121112
end.
11131113

1114+
whereis_name(Name) ->
1115+
case ets:lookup(global_names, Name) of
1116+
[{_Name, Pid, _Method, _RPid, _Ref}] ->
1117+
if node(Pid) == node() ->
1118+
case is_process_alive(Pid) of
1119+
true -> Pid;
1120+
false -> undefined
1121+
end;
1122+
true ->
1123+
Pid
1124+
end;
1125+
[] -> undefined
1126+
end.
1127+
11141128
find_prioritisers(GS2State = #gs2_state { mod = Mod }) ->
11151129
PrioriCall = function_exported_or_default(
11161130
Mod, 'prioritise_call', 3,

0 commit comments

Comments
 (0)