diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-09-22 16:51:46 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-09-22 16:51:46 +0100 |
commit | 178af6f5d42519a6b8da99fafa22820b3752aebb (patch) | |
tree | 0a91cf5c3b4bb74642e9196544b04e8593b59792 /src/mirrored_supervisor_sups.erl | |
parent | 877bd6f917cf9958a3151c693d001173a200d077 (diff) | |
download | rabbitmq-server-178af6f5d42519a6b8da99fafa22820b3752aebb.tar.gz |
Move actual supervisor definitions out to avoid conflicting behaviours in a module.bug26378
Diffstat (limited to 'src/mirrored_supervisor_sups.erl')
-rw-r--r-- | src/mirrored_supervisor_sups.erl | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/mirrored_supervisor_sups.erl b/src/mirrored_supervisor_sups.erl new file mode 100644 index 00000000..6ec08435 --- /dev/null +++ b/src/mirrored_supervisor_sups.erl @@ -0,0 +1,43 @@ +%% The contents of this file are subject to the Mozilla Public License +%% Version 1.1 (the "License"); you may not use this file except in +%% compliance with the License. You may obtain a copy of the License at +%% http://www.mozilla.org/MPL/ +%% +%% 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. +%% +%% The Original Code is RabbitMQ. +%% +%% The Initial Developer of the Original Code is GoPivotal, Inc. +%% Copyright (c) 2011-2014 GoPivotal, Inc. All rights reserved. +%% + +-module(mirrored_supervisor_sups). + +-define(SUPERVISOR, supervisor2). +-define(GS_MODULE, mirrored_supervisor). + +-behaviour(?SUPERVISOR). + +-export([init/1]). + +%%---------------------------------------------------------------------------- + +init({overall, _Group, _TxFun, ignore}) -> ignore; +init({overall, Group, TxFun, {ok, {Restart, ChildSpecs}}}) -> + %% Important: Delegate MUST start before Mirroring so that when we + %% shut down from above it shuts down last, so Mirroring does not + %% see it die. + %% + %% See comment in handle_info('DOWN', ...) in mirrored_supervisor + {ok, {{one_for_all, 0, 1}, + [{delegate, {?SUPERVISOR, start_link, [?MODULE, {delegate, Restart}]}, + temporary, 16#ffffffff, supervisor, [?SUPERVISOR]}, + {mirroring, {?GS_MODULE, start_internal, [Group, TxFun, ChildSpecs]}, + permanent, 16#ffffffff, worker, [?MODULE]}]}}; + + +init({delegate, Restart}) -> + {ok, {Restart, []}}. |