From 0b2660f64d871dc6f060fa66a6cc0e12425996ed Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 21 Mar 2023 18:47:28 +0800 Subject: [PATCH] chore: start emqx_retainer_worker_pool when relup --- .../emqx_retainer/src/emqx_retainer.appup.src | 50 ++++++------------- apps/emqx_retainer/src/emqx_retainer_sup.erl | 31 +++++++++--- 2 files changed, 39 insertions(+), 42 deletions(-) diff --git a/apps/emqx_retainer/src/emqx_retainer.appup.src b/apps/emqx_retainer/src/emqx_retainer.appup.src index e732189a1..3609fa78a 100644 --- a/apps/emqx_retainer/src/emqx_retainer.appup.src +++ b/apps/emqx_retainer/src/emqx_retainer.appup.src @@ -1,43 +1,25 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.5", + [{<<"4\\.4\\.[1-5]">>, [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.2", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, - {"4.4.1", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, + {apply,{emqx_retainer_sup,ensure_worker_pool_started,[]}}, + {load_module,emqx_retainer,brutal_purge,soft_purge,[]} + ]}, {"4.4.0", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, + [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, + {apply,{emqx_retainer_sup,ensure_worker_pool_started,[]}}, + {load_module,emqx_retainer,brutal_purge,soft_purge,[]}, + {load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]} + ]}, {<<".*">>,[]}], - [{"4.4.5", + [{<<"4\\.4\\.[1-5]">>, [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer,brutal_purge,soft_purge,[]}]}, - {"4.4.2", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, - {"4.4.1", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_retainer,brutal_purge,soft_purge,[]} + ]}, {"4.4.0", - [{load_module,emqx_retainer,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]}, - {load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]}, + [{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}, + {load_module,emqx_retainer,brutal_purge,soft_purge,[]}, + {load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]} + ]}, {<<".*">>,[]}]}. diff --git a/apps/emqx_retainer/src/emqx_retainer_sup.erl b/apps/emqx_retainer/src/emqx_retainer_sup.erl index 01e8770e6..3dadd4d6d 100644 --- a/apps/emqx_retainer/src/emqx_retainer_sup.erl +++ b/apps/emqx_retainer/src/emqx_retainer_sup.erl @@ -20,12 +20,23 @@ -include("emqx_retainer.hrl"). --export([start_link/1]). +-export([ start_link/1 + , ensure_worker_pool_started/0 + , worker_pool_spec/0 + ]). + -export([init/1]). start_link(Env) -> supervisor:start_link({local, ?MODULE}, ?MODULE, [Env]). +ensure_worker_pool_started() -> + try + supervisor:start_child(?MODULE, worker_pool_spec()) + catch + _:_ -> ignore + end. + init([Env]) -> Retainer = #{ id => retainer, @@ -35,19 +46,22 @@ init([Env]) -> type => worker, modules => [emqx_retainer] }, - WorkerPool = #{ + WorkerPool = worker_pool_spec(), + ChildSpecs = case is_managed_by_modules() of + false -> [Retainer, WorkerPool]; + true -> [] + end, + {ok, {{one_for_one, 10, 3600}, ChildSpecs}}. + +worker_pool_spec() -> + #{ id => ?POOL, start => {emqx_pool_sup, start_link, [?POOL, random, {emqx_pool, start_link, []}]}, restart => permanent, shutdown => 5000, type => supervisor, modules => [emqx_pool_sup] - }, - ChildSpecs = case is_managed_by_modules() of - false -> [Retainer, WorkerPool]; - true -> [WorkerPool] - end, - {ok, {{one_for_one, 10, 3600}, ChildSpecs}}. + }. -ifdef(EMQX_ENTERPRISE). @@ -69,3 +83,4 @@ is_managed_by_modules() -> false. -endif. +