Revert "Switch to classic OTP supervisor for two modules"

This reverts commit 1bead422a9.
This commit is contained in:
Luke Bakken 2020-08-31 15:51:39 -07:00
parent abb0ab5bd9
commit 1daae3064d
2 changed files with 23 additions and 50 deletions

View File

@ -6,18 +6,18 @@
%%
-module(rabbit_mqtt_retainer_sup).
-behaviour(supervisor).
-behaviour(supervisor2).
-export([start_link/1, init/1, start_child/2,start_child/1, child_for_vhost/1,
delete_child/1]).
-define(ENCODING, utf8).
-spec start_child(binary()) -> supervisor:startchild_ret().
-spec start_child(term(), binary()) -> supervisor:startchild_ret().
-spec start_child(binary()) -> supervisor2:startchild_ret().
-spec start_child(term(), binary()) -> supervisor2:startchild_ret().
start_link(SupName) ->
supervisor:start_link(SupName, ?MODULE, []).
supervisor2:start_link(SupName, ?MODULE, []).
child_for_vhost(VHost) when is_binary(VHost) ->
case rabbit_mqtt_retainer_sup:start_child(VHost) of
@ -29,44 +29,28 @@ start_child(VHost) when is_binary(VHost) ->
start_child(rabbit_mqtt_retainer:store_module(), VHost).
start_child(RetainStoreMod, VHost) ->
supervisor:start_child(?MODULE,
#{
id => vhost_to_atom(VHost),
start => {rabbit_mqtt_retainer, start_link, [RetainStoreMod, VHost]},
restart => permanent,
shutdown => 60,
type => worker,
modules => [rabbit_mqtt_retainer]
}).
supervisor2:start_child(?MODULE,
{vhost_to_atom(VHost),
{rabbit_mqtt_retainer, start_link, [RetainStoreMod, VHost]},
permanent, 60, worker, [rabbit_mqtt_retainer]}).
delete_child(VHost) ->
Id = vhost_to_atom(VHost),
ok = supervisor:terminate_child(?MODULE, Id),
ok = supervisor:delete_child(?MODULE, Id).
ok = supervisor2:terminate_child(?MODULE, Id),
ok = supervisor2:delete_child(?MODULE, Id).
init([]) ->
Mod = rabbit_mqtt_retainer:store_module(),
rabbit_log:info("MQTT retained message store: ~p~n", [Mod]),
Flags = #{
strategy => one_for_all,
period => 5,
intensity => 5
},
{ok, {Flags, child_specs(Mod, rabbit_vhost:list_names())}}.
rabbit_log:info("MQTT retained message store: ~p~n",
[Mod]),
{ok, {{one_for_one, 5, 5}, child_specs(Mod, rabbit_vhost:list_names())}}.
child_specs(Mod, VHosts) ->
%% see start_child/2
[child_spec(V, Mod) || V <- VHosts].
child_spec(VHost, Mod) ->
#{
id => vhost_to_atom(VHost),
start => {rabbit_mqtt_retainer, start_link, [Mod, VHost]},
restart => permanent,
shutdown => infinity,
type => worker,
modules => [rabbit_mqtt_retainer]
}.
[{vhost_to_atom(V),
{rabbit_mqtt_retainer, start_link, [Mod, V]},
permanent, infinity, worker, [rabbit_mqtt_retainer]} || V <- VHosts].
vhost_to_atom(VHost) ->
%% we'd like to avoid any conversion here because

View File

@ -6,7 +6,7 @@
%%
-module(rabbit_mqtt_sup).
-behaviour(supervisor).
-behaviour(supervisor2).
-include_lib("rabbit_common/include/rabbit.hrl").
@ -16,7 +16,7 @@
-define(TLS_PROTOCOL, 'mqtt/ssl').
start_link(Listeners, []) ->
supervisor:start_link({local, ?MODULE}, ?MODULE, [Listeners]).
supervisor2:start_link({local, ?MODULE}, ?MODULE, [Listeners]).
init([{Listeners, SslListeners0}]) ->
NumTcpAcceptors = application:get_env(rabbitmq_mqtt, num_tcp_acceptors, 10),
@ -31,21 +31,10 @@ init([{Listeners, SslListeners0}]) ->
danger -> []
end}
end,
Flags = #{
strategy => one_for_all,
period => 10,
intensity => 10
},
RetainerSpec = #{
id => rabbit_mqtt_retainer_sup,
start => {rabbit_mqtt_retainer_sup, start_link, [{local, rabbit_mqtt_retainer_sup}]},
restart => transient,
shutdown => ?SUPERVISOR_WAIT,
type => supervisor,
modules => [rabbit_mqtt_retainer_sup]
},
{ok, {Flags,
[RetainerSpec |
{ok, {{one_for_all, 10, 10},
[{rabbit_mqtt_retainer_sup,
{rabbit_mqtt_retainer_sup, start_link, [{local, rabbit_mqtt_retainer_sup}]},
transient, ?SUPERVISOR_WAIT, supervisor, [rabbit_mqtt_retainer_sup]} |
listener_specs(fun tcp_listener_spec/1,
[SocketOpts, NumTcpAcceptors], Listeners) ++
listener_specs(fun ssl_listener_spec/1,