fix: update rule_cache when get_rules/0
This commit is contained in:
parent
7dbbef30c9
commit
e33a5bfc89
|
@ -4,21 +4,19 @@
|
|||
[{"4.4.16",
|
||||
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}
|
||||
]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.15",
|
||||
[{load_module,emqx_rule_events,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_engine,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{<<"4\\.4\\.1[3-4]">>,
|
||||
[{load_module,emqx_rule_engine_app,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_runtime,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_monitor,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_runtime,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_monitor,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
|
@ -42,7 +39,6 @@
|
|||
{update,emqx_rule_engine_jwt_sup,supervisor},
|
||||
{load_module,emqx_rule_engine_jwt,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_api,brutal_purge,soft_purge,[]},
|
||||
{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_metrics,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.9",
|
||||
[{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_rule_engine_jwt},
|
||||
|
@ -83,7 +79,6 @@
|
|||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_sqltester,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_engine,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.8",
|
||||
|
@ -102,7 +97,6 @@
|
|||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_sqltester,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_metrics,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_runtime,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.5",
|
||||
[{add_module,emqx_rule_engine_jwt},
|
||||
{add_module,emqx_rule_engine_jwt_worker},
|
||||
|
@ -142,7 +136,6 @@
|
|||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,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_runtime,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_utils,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_runtime,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}]},
|
||||
|
@ -189,7 +181,6 @@
|
|||
{add_module,emqx_rule_date},
|
||||
{load_module,emqx_rule_maps,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,[]}]},
|
||||
{"4.4.2",
|
||||
[{add_module,emqx_rule_engine_jwt},
|
||||
|
@ -209,7 +200,6 @@
|
|||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_runtime,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_funcs,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_rule_date},
|
||||
|
@ -237,9 +227,8 @@
|
|||
{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_rule_date},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}}
|
||||
]},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.0",
|
||||
[{add_module,emqx_rule_engine_jwt},
|
||||
{add_module,emqx_rule_engine_jwt_worker},
|
||||
|
@ -259,7 +248,6 @@
|
|||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_rule_date},
|
||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||
{apply,{emqx_rule_registry,update_rules_cache,[]}},
|
||||
{update,emqx_rule_metrics,{advanced,["4.4.0"]}},
|
||||
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
|
|
|
@ -165,6 +165,10 @@ dump() ->
|
|||
start_link() ->
|
||||
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
|
||||
%%------------------------------------------------------------------------------
|
||||
|
@ -172,7 +176,9 @@ start_link() ->
|
|||
-spec(get_rules() -> list(emqx_rule_engine:rule())).
|
||||
get_rules() ->
|
||||
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
|
||||
end.
|
||||
|
||||
|
@ -186,7 +192,8 @@ update_rules_cache() ->
|
|||
put_rules_to_cache(get_all_records(?RULE_TAB)).
|
||||
|
||||
clear_rules_cache() ->
|
||||
persistent_term:erase(?PK_RULE_TAB).
|
||||
_ = persistent_term:erase(?PK_RULE_TAB),
|
||||
ok.
|
||||
|
||||
get_rules_ordered_by_ts() ->
|
||||
lists:keysort(#rule.created_at, get_rules()).
|
||||
|
@ -472,6 +479,10 @@ handle_call(Req, _From, State) ->
|
|||
?LOG(error, "[RuleRegistry]: unexpected call - ~p", [Req]),
|
||||
{reply, ignored, State}.
|
||||
|
||||
handle_cast(update_rules_cache, State) ->
|
||||
_ = update_rules_cache(),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast(Msg, State) ->
|
||||
?LOG(error, "[RuleRegistry]: unexpected cast ~p", [Msg]),
|
||||
{noreply, State}.
|
||||
|
|
Loading…
Reference in New Issue