fix: restart oracle resources at relup
This commit is contained in:
parent
ae4b4f9e60
commit
e459180015
|
@ -1,10 +1,13 @@
|
|||
%% -*- mode: erlang -*-
|
||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{VSN,
|
||||
[{"4.4.14",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.13",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||
[{<<"4\\.4\\.1[3-4]">>,
|
||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.12",
|
||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]},
|
||||
{update,emqx_rule_engine_jwt_sup,supervisor},
|
||||
{load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]},
|
||||
|
@ -16,7 +19,8 @@
|
|||
{load_module,emqx_rule_engine_sup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_engine_sup,ensure_api_delegator_started,[]}},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.10",
|
||||
[{add_module,emqx_rule_engine_jwt},
|
||||
{add_module,emqx_rule_engine_jwt_worker},
|
||||
|
@ -222,10 +226,13 @@
|
|||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}]},
|
||||
{<<".*">>,[]}],
|
||||
[{"4.4.14",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.13",[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]},
|
||||
[{<<"4\\.4\\.1[3-4]">>,
|
||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.12",
|
||||
[{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]},
|
||||
{update,emqx_rule_engine_jwt_sup,supervisor},
|
||||
{load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]},
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
, create_resource/1
|
||||
, test_resource/1
|
||||
, start_resource/1
|
||||
, start_all_resources_of_type/1
|
||||
, get_resource_status/1
|
||||
, is_resource_alive/1
|
||||
, is_resource_alive/2
|
||||
|
@ -354,19 +355,27 @@ do_check_and_update_resource(#{id := Id, type := Type, description := NewDescrip
|
|||
-spec(start_resource(resource_id()) -> ok | {error, Reason :: term()}).
|
||||
start_resource(ResId) ->
|
||||
case emqx_rule_registry:find_resource(ResId) of
|
||||
{ok, #resource{type = ResType, config = Config}} ->
|
||||
{ok, #resource_type{on_create = {Mod, Create}}}
|
||||
= emqx_rule_registry:find_resource_type(ResType),
|
||||
try
|
||||
init_resource_with_retrier(Mod, Create, ResId, Config),
|
||||
refresh_actions_of_a_resource(ResId)
|
||||
catch
|
||||
throw:Reason -> {error, Reason}
|
||||
end;
|
||||
{ok, Res} ->
|
||||
do_start_resource(Res);
|
||||
not_found ->
|
||||
{error, {resource_not_found, ResId}}
|
||||
end.
|
||||
|
||||
do_start_resource(#resource{id = ResId, type = ResType, config = Config}) ->
|
||||
{ok, #resource_type{on_create = {Mod, Create}}}
|
||||
= emqx_rule_registry:find_resource_type(ResType),
|
||||
try
|
||||
init_resource_with_retrier(Mod, Create, ResId, Config),
|
||||
refresh_actions_of_a_resource(ResId)
|
||||
catch
|
||||
throw:Reason -> {error, Reason}
|
||||
end.
|
||||
|
||||
-spec(start_all_resources_of_type(resource_type_name()) -> [{resource_id(), ok | {error, term()}}]).
|
||||
start_all_resources_of_type(Type) ->
|
||||
[{ResId, do_start_resource(Res)}
|
||||
|| #resource{id = ResId} = Res <- emqx_rule_registry:get_resources_by_type(Type)].
|
||||
|
||||
-spec(test_resource(#{type := _, config := _, _ => _}) -> ok | {error, Reason :: term()}).
|
||||
test_resource(#{type := Type} = Params) ->
|
||||
case emqx_rule_registry:find_resource_type(Type) of
|
||||
|
|
|
@ -32,6 +32,7 @@ post_release_upgrade(FromRelVsn, _) ->
|
|||
{_, CurrRelVsn} = ?EMQX_RELEASE,
|
||||
?INFO("emqx has been upgraded from ~s to ~s!", [FromRelVsn, CurrRelVsn]),
|
||||
maybe_refresh_jwt_module(FromRelVsn),
|
||||
_ = maybe_restart_oracle_resources(FromRelVsn),
|
||||
reload_components().
|
||||
|
||||
%% What to do after downgraded to an old release vsn.
|
||||
|
@ -93,3 +94,27 @@ maybe_refresh_jwt_module(_) ->
|
|||
ok.
|
||||
|
||||
-endif.
|
||||
|
||||
|
||||
-ifdef(EMQX_ENTERPRISE).
|
||||
maybe_restart_oracle_resources("4.4." ++ PatchVsn0) ->
|
||||
try
|
||||
case list_to_integer(PatchVsn0) of
|
||||
PatchVsn when PatchVsn =< 14 ->
|
||||
emqx_rule_engine:start_all_resources_of_type(backend_oracle);
|
||||
_ -> ok
|
||||
end
|
||||
catch
|
||||
Err:Reason:ST ->
|
||||
?INFO("maybe_restart_oracle_resources failed: ~p", [{Err, Reason, ST}]),
|
||||
ok
|
||||
end;
|
||||
maybe_restart_oracle_resources(_) ->
|
||||
ok.
|
||||
|
||||
-else.
|
||||
|
||||
maybe_restart_oracle_resources(_) ->
|
||||
ok.
|
||||
|
||||
-endif.
|
||||
|
|
Loading…
Reference in New Issue