diff options
author | Björn Gustavsson <[email protected]> | 2010-05-06 12:00:00 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-08-20 08:53:04 +0200 |
commit | a70dc0de5a7050c1313a604a261a35b42584950b (patch) | |
tree | 613d3ba727da165ca5a5c6bb5988e5e345f3d190 /lib/sasl/src/release_handler_1.erl | |
parent | 6c8fb0bf44f74e9fc82f64949aba0bae8309fc88 (diff) | |
download | otp-a70dc0de5a7050c1313a604a261a35b42584950b.tar.gz otp-a70dc0de5a7050c1313a604a261a35b42584950b.tar.bz2 otp-a70dc0de5a7050c1313a604a261a35b42584950b.zip |
sasl: Patch 1116
OTP-8619 In R13B04 sys:get_status was modified to invoke format_status/2
in the callback module if the module exports that function.
This resulted in a change to the term returned from calling
sys:get_status on the supervisor module, since supervisor
is a gen_server and gen_server exports format_status. The
sasl release_handler_1 module had a dependency on the pre-R13B04
term returned by sys:get_status when invoked on a supervisor,
so the R13B04 change broke that dependency. This problem
has been fixed by change release_handler_1 to handle both
the pre-R13B04 and R13B04 terms that sys:get_status can
return from a supervisor.
Diffstat (limited to 'lib/sasl/src/release_handler_1.erl')
-rw-r--r-- | lib/sasl/src/release_handler_1.erl | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/sasl/src/release_handler_1.erl b/lib/sasl/src/release_handler_1.erl index e3e3caba99..9c0edf4e99 100644 --- a/lib/sasl/src/release_handler_1.erl +++ b/lib/sasl/src/release_handler_1.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 1996-2010. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% -module(release_handler_1). @@ -554,7 +554,13 @@ get_supervisor_module(SupPid) -> get_supervisor_module1(SupPid) -> {status, _Pid, {module, _Mod}, [_PDict, _SysState, _Parent, _Dbg, Misc]} = sys:get_status(SupPid), - [_Name, State, _Type, _Time] = Misc, + %% supervisor Misc field changed at R13B04, handle old and new variants here + State = case Misc of + [_Name, State1, _Type, _Time] -> + State1; + [_Header, _Data, {data, [{"State", State2}]}] -> + State2 + end, %% Cannot use #supervisor_state{module = Module} = State. {ok, element(#supervisor_state.module, State)}. |