From 9102bfe2a6b96d9f560cb20713c888dffee419ae Mon Sep 17 00:00:00 2001 From: Matthew Sackman Date: Mon, 8 Mar 2010 15:34:35 +0000 Subject: Reworked the supervision heirarchy again --- src/rabbit.erl | 8 ++++---- src/rabbit_alarm.erl | 2 +- src/rabbit_amqqueue.erl | 2 +- src/rabbit_networking.erl | 8 ++++---- src/rabbit_restartable_sup.erl | 20 +++++--------------- src/rabbit_sup.erl | 20 +++++++++++++++----- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/rabbit.erl b/src/rabbit.erl index 94d852f9..ee39100a 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -61,7 +61,7 @@ -rabbit_boot_step({rabbit_log, [{description, "logging server"}, - {mfa, {rabbit_restartable_sup, start_child, + {mfa, {rabbit_sup, start_restartable_child, [rabbit_log]}}, {enables, kernel_ready}]}). @@ -87,14 +87,14 @@ -rabbit_boot_step({rabbit_router, [{description, "cluster router"}, - {mfa, {rabbit_restartable_sup, start_child, + {mfa, {rabbit_sup, start_restartable_child, [rabbit_router]}}, {requires, kernel_ready}, {enables, core_initialized}]}). -rabbit_boot_step({rabbit_node_monitor, [{description, "node monitor"}, - {mfa, {rabbit_restartable_sup, start_child, + {mfa, {rabbit_sup, start_restartable_child, [rabbit_node_monitor]}}, {requires, kernel_ready}, {requires, rabbit_amqqueue_sup}, @@ -124,7 +124,7 @@ -rabbit_boot_step({guid_generator, [{description, "guid generator"}, - {mfa, {rabbit_restartable_sup, start_child, + {mfa, {rabbit_sup, start_restartable_child, [rabbit_guid]}}, {requires, persister}, {enables, routing_ready}]}). diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl index d5d245aa..e5559b46 100644 --- a/src/rabbit_alarm.erl +++ b/src/rabbit_alarm.erl @@ -60,7 +60,7 @@ start() -> true -> ok; false -> - rabbit_restartable_sup:start_child(vm_memory_monitor, + rabbit_sup:start_restartable_child(vm_memory_monitor, [MemoryWatermark]) end, ok. diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index f1e5e14b..ceec00fd 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -119,7 +119,7 @@ start() -> {ok,_} = supervisor:start_child( - rabbit_restartable_sup, + rabbit_sup, {rabbit_amqqueue_sup, {rabbit_amqqueue_sup, start_link, []}, transient, infinity, supervisor, [rabbit_amqqueue_sup]}), diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index 4d319706..7978573d 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -109,7 +109,7 @@ boot_ssl() -> start() -> {ok,_} = supervisor:start_child( - rabbit_restartable_sup, + rabbit_sup, {rabbit_tcp_client_sup, {tcp_client_sup, start_link, [{local, rabbit_tcp_client_sup}, @@ -156,7 +156,7 @@ start_listener(Host, Port, Label, OnConnect) -> {IPAddress, Name} = check_tcp_listener_address(rabbit_tcp_listener_sup, Host, Port), {ok,_} = supervisor:start_child( - rabbit_restartable_sup, + rabbit_sup, {Name, {tcp_listener_sup, start_link, [IPAddress, Port, ?RABBIT_TCP_OPTS , @@ -169,8 +169,8 @@ start_listener(Host, Port, Label, OnConnect) -> stop_tcp_listener(Host, Port) -> IPAddress = getaddr(Host), Name = rabbit_misc:tcp_name(rabbit_tcp_listener_sup, IPAddress, Port), - ok = supervisor:terminate_child(rabbit_restartable_sup, Name), - ok = supervisor:delete_child(rabbit_restartable_sup, Name), + ok = supervisor:terminate_child(rabbit_sup, Name), + ok = supervisor:delete_child(rabbit_sup, Name), ok. tcp_listener_started(IPAddress, Port) -> diff --git a/src/rabbit_restartable_sup.erl b/src/rabbit_restartable_sup.erl index bc6f40da..2813fd15 100644 --- a/src/rabbit_restartable_sup.erl +++ b/src/rabbit_restartable_sup.erl @@ -33,22 +33,12 @@ -behaviour(supervisor). --export([start_link/0, start_child/1, start_child/2]). +-export([start_link/2]). -export([init/1]). --define(SERVER, ?MODULE). +start_link(Name, {_M, _F, _A} = Fun) -> + supervisor:start_link({local, Name}, ?MODULE, [Fun]). -start_link() -> - supervisor:start_link({local, ?SERVER}, ?MODULE, []). - -start_child(Mod) -> - start_child(Mod, []). - -start_child(Mod, Args) -> - {ok, _} = supervisor:start_child(?SERVER, {Mod, {Mod, start_link, Args}, - transient, 100, worker, [Mod]}), - ok. - -init([]) -> - {ok, {{one_for_one, 10, 10}, []}}. +init([{Mod, _F, _A} = Fun]) -> + {ok, {{one_for_one, 10, 10}, [{Mod, Fun, transient, 100, worker, [Mod]}]}}. diff --git a/src/rabbit_sup.erl b/src/rabbit_sup.erl index 7525db41..c3d1037e 100644 --- a/src/rabbit_sup.erl +++ b/src/rabbit_sup.erl @@ -33,7 +33,8 @@ -behaviour(supervisor). --export([start_link/0, start_child/1, start_child/2]). +-export([start_link/0, start_child/1, start_child/2, + start_restartable_child/1, start_restartable_child/2]). -export([init/1]). @@ -50,8 +51,17 @@ start_child(Mod, Args) -> transient, 100, worker, [Mod]}), ok. +start_restartable_child(Mod) -> + start_restartable_child(Mod, []). + +start_restartable_child(Mod, Args) -> + Name = list_to_atom(atom_to_list(Mod) ++ "_sup"), + {ok, _} = supervisor:start_child( + ?SERVER, + {Name, {rabbit_restartable_sup, start_link, + [Name, {Mod, start_link, Args}]}, + transient, infinity, supervisor, [rabbit_restartable_sup]}), + ok. + init([]) -> - {ok, {{one_for_all, 0, 1}, - [{rabbit_restartable_sup, - {rabbit_restartable_sup, start_link, []}, - transient, infinity, supervisor, [rabbit_restartable_sup]}]}}. + {ok, {{one_for_all, 0, 1}, []}}. -- cgit v1.2.1