fix: update rule_cache when get_rules/0
This commit is contained in:
parent
7dbbef30c9
commit
e33a5bfc89
|
@ -4,21 +4,19 @@
|
||||||
[{"4.4.16",
|
[{"4.4.16",
|
||||||
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}
|
|
||||||
]},
|
]},
|
||||||
{"4.4.15",
|
{"4.4.15",
|
||||||
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
]},
|
||||||
{<<"4\\.4\\.1[3-4]">>,
|
{<<"4\\.4\\.1[3-4]">>,
|
||||||
[{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
||||||
|
@ -26,7 +24,6 @@
|
||||||
[{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
@ -42,7 +39,6 @@
|
||||||
{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,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{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,[]}},
|
||||||
|
@ -64,8 +60,8 @@
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
]},
|
||||||
{"4.4.9",
|
{"4.4.9",
|
||||||
[{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_rule_engine_jwt},
|
{add_module,emqx_rule_engine_jwt},
|
||||||
|
@ -83,7 +79,6 @@
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.8",
|
{"4.4.8",
|
||||||
|
@ -102,7 +97,6 @@
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
||||||
|
@ -124,8 +118,8 @@
|
||||||
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
]},
|
||||||
{"4.4.5",
|
{"4.4.5",
|
||||||
[{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},
|
||||||
|
@ -142,7 +136,6 @@
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
||||||
|
@ -164,7 +157,6 @@
|
||||||
{load_module,emqx_rule_validator,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_validator,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{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,[]},
|
||||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}]},
|
||||||
|
@ -189,7 +181,6 @@
|
||||||
{add_module,emqx_rule_date},
|
{add_module,emqx_rule_date},
|
||||||
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.2",
|
{"4.4.2",
|
||||||
[{add_module,emqx_rule_engine_jwt},
|
[{add_module,emqx_rule_engine_jwt},
|
||||||
|
@ -209,7 +200,6 @@
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_rule_date},
|
{add_module,emqx_rule_date},
|
||||||
|
@ -237,8 +227,7 @@
|
||||||
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_rule_date},
|
{add_module,emqx_rule_date},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}
|
|
||||||
]},
|
]},
|
||||||
{"4.4.0",
|
{"4.4.0",
|
||||||
[{add_module,emqx_rule_engine_jwt},
|
[{add_module,emqx_rule_engine_jwt},
|
||||||
|
@ -259,7 +248,6 @@
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_rule_date},
|
{add_module,emqx_rule_date},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
|
||||||
{update,emqx_rule_metrics,{advanced,["4.4.0"]}},
|
{update,emqx_rule_metrics,{advanced,["4.4.0"]}},
|
||||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
|
|
@ -165,6 +165,10 @@ dump() ->
|
||||||
start_link() ->
|
start_link() ->
|
||||||
gen_server:start_link({local, ?REGISTRY}, ?MODULE, [], []).
|
gen_server:start_link({local, ?REGISTRY}, ?MODULE, [], []).
|
||||||
|
|
||||||
|
%% Use a single process to protect the cache updating to avoid race conditions
|
||||||
|
update_rules_cache_locally() ->
|
||||||
|
gen_server:cast(?REGISTRY, update_rules_cache).
|
||||||
|
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
%% Rule Management
|
%% Rule Management
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
|
@ -172,7 +176,9 @@ start_link() ->
|
||||||
-spec(get_rules() -> list(emqx_rule_engine:rule())).
|
-spec(get_rules() -> list(emqx_rule_engine:rule())).
|
||||||
get_rules() ->
|
get_rules() ->
|
||||||
case get_rules_from_cache() of
|
case get_rules_from_cache() of
|
||||||
not_found -> get_all_records(?RULE_TAB);
|
not_found ->
|
||||||
|
update_rules_cache_locally(),
|
||||||
|
get_all_records(?RULE_TAB);
|
||||||
CachedRules -> CachedRules
|
CachedRules -> CachedRules
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -186,7 +192,8 @@ update_rules_cache() ->
|
||||||
put_rules_to_cache(get_all_records(?RULE_TAB)).
|
put_rules_to_cache(get_all_records(?RULE_TAB)).
|
||||||
|
|
||||||
clear_rules_cache() ->
|
clear_rules_cache() ->
|
||||||
persistent_term:erase(?PK_RULE_TAB).
|
_ = persistent_term:erase(?PK_RULE_TAB),
|
||||||
|
ok.
|
||||||
|
|
||||||
get_rules_ordered_by_ts() ->
|
get_rules_ordered_by_ts() ->
|
||||||
lists:keysort(#rule.created_at, get_rules()).
|
lists:keysort(#rule.created_at, get_rules()).
|
||||||
|
@ -472,6 +479,10 @@ handle_call(Req, _From, State) ->
|
||||||
?LOG(error, "[RuleRegistry]: unexpected call - ~p", [Req]),
|
?LOG(error, "[RuleRegistry]: unexpected call - ~p", [Req]),
|
||||||
{reply, ignored, State}.
|
{reply, ignored, State}.
|
||||||
|
|
||||||
|
handle_cast(update_rules_cache, State) ->
|
||||||
|
_ = update_rules_cache(),
|
||||||
|
{noreply, State};
|
||||||
|
|
||||||
handle_cast(Msg, State) ->
|
handle_cast(Msg, State) ->
|
||||||
?LOG(error, "[RuleRegistry]: unexpected cast ~p", [Msg]),
|
?LOG(error, "[RuleRegistry]: unexpected cast ~p", [Msg]),
|
||||||
{noreply, State}.
|
{noreply, State}.
|
||||||
|
|
Loading…
Reference in New Issue