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