diff options
author | Zandra <[email protected]> | 2016-04-27 14:22:57 +0200 |
---|---|---|
committer | Zandra <[email protected]> | 2016-04-27 14:22:57 +0200 |
commit | ffde713643a17efac285165e830809c797f3f202 (patch) | |
tree | 765e60dcc2093064f080a0080bfbc0e7070cef0f /lib/kernel | |
parent | 77f0c14aa522615f08cf219018840fcd54ba60c3 (diff) | |
parent | a52df823097eb0f8820f4e4d1cbe73b7754d735a (diff) | |
download | otp-ffde713643a17efac285165e830809c797f3f202.tar.gz otp-ffde713643a17efac285165e830809c797f3f202.tar.bz2 otp-ffde713643a17efac285165e830809c797f3f202.zip |
Merge branch 'xumingthepoet/maint/PR-1008/OTP-13516'
* xumingthepoet/maint/PR-1008/OTP-13516:
Update global_group_SUITE.erl
Fix global_group.erl
Diffstat (limited to 'lib/kernel')
-rw-r--r-- | lib/kernel/src/global_group.erl | 6 | ||||
-rw-r--r-- | lib/kernel/test/global_group_SUITE.erl | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/kernel/src/global_group.erl b/lib/kernel/src/global_group.erl index e71f83f9d3..8ac0bd9551 100644 --- a/lib/kernel/src/global_group.erl +++ b/lib/kernel/src/global_group.erl @@ -692,7 +692,7 @@ handle_cast({registered_names, User}, S) -> handle_cast({registered_names_res, Result, Pid, From}, S) -> % io:format(">>>>> registered_names_res Result ~p~n",[Result]), unlink(Pid), - exit(Pid, normal), + Pid ! kill, Wait = get(registered_names), NewWait = lists:delete({Pid, From},Wait), put(registered_names, NewWait), @@ -718,7 +718,7 @@ handle_cast({send_res, Result, Name, Msg, Pid, From}, S) -> ToPid ! Msg end, unlink(Pid), - exit(Pid, normal), + Pid ! kill, Wait = get(send), NewWait = lists:delete({Pid, From, Name, Msg},Wait), put(send, NewWait), @@ -748,7 +748,7 @@ handle_cast({find_name_res, Result, Pid, From}, S) -> % io:format(">>>>> find_name_res Result ~p~n",[Result]), % io:format(">>>>> find_name_res get() ~p~n",[get()]), unlink(Pid), - exit(Pid, normal), + Pid ! kill, Wait = get(whereis_name), NewWait = lists:delete({Pid, From},Wait), put(whereis_name, NewWait), diff --git a/lib/kernel/test/global_group_SUITE.erl b/lib/kernel/test/global_group_SUITE.erl index 06a5b7fcfe..594ee6b537 100644 --- a/lib/kernel/test/global_group_SUITE.erl +++ b/lib/kernel/test/global_group_SUITE.erl @@ -1153,6 +1153,16 @@ test_exit(Config) when is_list(Config) -> rpc:call(Cp1, global_group, send, [king, "The message"]), undefined = rpc:call(Cp1, global_group, whereis_name, [king]), + % make sure the search process really exits after every global_group operations + ProcessCount0 = rpc:call(Cp1, erlang, system_info, [process_count]), + _ = rpc:call(Cp1, global_group, whereis_name, [{node, Cp1nn}, whatever_pid_name]), + ProcessCount1 = rpc:call(Cp1, erlang, system_info, [process_count]), + _ = rpc:call(Cp1, global_group, registered_names, [{node, Cp1nn}]), + ProcessCount2 = rpc:call(Cp1, erlang, system_info, [process_count]), + _ = rpc:call(Cp1, global_group, send, [{node, Cp1nn}, whatever_pid_name, msg]), + ProcessCount3 = rpc:call(Cp1, erlang, system_info, [process_count]), + ProcessCount0 = ProcessCount1 = ProcessCount2 = ProcessCount3, + %% stop the nodes, and make sure names are released. stop_node(Cp1), stop_node(Cp2), |