aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
diff options
context:
space:
mode:
authorSiri Hansen <[email protected]>2016-06-08 13:39:56 +0200
committerSiri Hansen <[email protected]>2016-06-08 13:39:56 +0200
commit41d1444bb13317f78fdf600a7102ff9f7cb12d13 (patch)
treecc4503dd40ad240c0fe46cc955e7975e8f020e77 /lib/stdlib/src
parenta029b8a7da7d1f6f34275cd209aabb5f8fec25bb (diff)
parente2577531278c5dde283c4ab7be766d081c363ec3 (diff)
downloadotp-41d1444bb13317f78fdf600a7102ff9f7cb12d13.tar.gz
otp-41d1444bb13317f78fdf600a7102ff9f7cb12d13.tar.bz2
otp-41d1444bb13317f78fdf600a7102ff9f7cb12d13.zip
Merge branch 'josevalim/supervisor-get-callback-module/PR-1000/OTP-13619'
* josevalim/supervisor-get-callback-module/PR-1000/OTP-13619: Return callback module in supervisor format_status
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r--lib/stdlib/src/supervisor.erl17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl
index a594c66fa7..c81e72689c 100644
--- a/lib/stdlib/src/supervisor.erl
+++ b/lib/stdlib/src/supervisor.erl
@@ -30,7 +30,7 @@
%% Internal exports
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
+ terminate/2, code_change/3, format_status/2]).
-export([try_again_restart/2]).
%% For release_handler only
@@ -264,8 +264,13 @@ cast(Supervisor, Req) ->
get_callback_module(Pid) ->
{status, _Pid, {module, _Mod},
[_PDict, _SysState, _Parent, _Dbg, Misc]} = sys:get_status(Pid),
- [_Header, _Data, {data, [{"State", State}]}] = Misc,
- State#state.module.
+ case lists:keyfind(supervisor, 1, Misc) of
+ {supervisor, [{"Callback", Mod}]} ->
+ Mod;
+ _ ->
+ [_Header, _Data, {data, [{"State", State}]} | _] = Misc,
+ State#state.module
+ end.
%%% ---------------------------------------------------
%%%
@@ -1450,3 +1455,9 @@ report_progress(Child, SupName) ->
Progress = [{supervisor, SupName},
{started, extract_child(Child)}],
error_logger:info_report(progress, Progress).
+
+format_status(terminate, [_PDict, State]) ->
+ State;
+format_status(_, [_PDict, State]) ->
+ [{data, [{"State", State}]},
+ {supervisor, [{"Callback", State#state.module}]}].