From defacb97dfbcacf8f16c6177cc6af965f4d78ceb Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 22 Jun 2022 14:34:30 +0800 Subject: [PATCH] fix: disabled resources for authz/authn started after emqx reboot --- apps/emqx_authn/src/emqx_authn_utils.erl | 18 ++++++++-------- apps/emqx_authz/src/emqx_authz_utils.erl | 26 +++++++++++++----------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/apps/emqx_authn/src/emqx_authn_utils.erl b/apps/emqx_authn/src/emqx_authn_utils.erl index 232cf5ac1..1bd65c7c8 100644 --- a/apps/emqx_authn/src/emqx_authn_utils.erl +++ b/apps/emqx_authn/src/emqx_authn_utils.erl @@ -50,22 +50,24 @@ %%------------------------------------------------------------------------------ create_resource(ResourceId, Module, Config) -> - {ok, _Data} = emqx_resource:create_local( + Result = emqx_resource:create_local( ResourceId, ?RESOURCE_GROUP, Module, Config, - #{} - ). + #{start_after_created => false} + ), + start_resource_if_enabled(Result, ResourceId, Config). update_resource(Module, Config, ResourceId) -> Opts = #{start_after_created => false}, Result = emqx_resource:recreate_local(ResourceId, Module, Config, Opts), - _ = - case Config of - #{enable := true} -> emqx_resource:start(ResourceId); - #{enable := false} -> ok - end, + start_resource_if_enabled(Result, ResourceId, Config). + +start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) -> + _ = emqx_resource:start(ResourceId), + Result; +start_resource_if_enabled(Result, _ResourceId, _Config) -> Result. check_password_from_selected_map(_Algorithm, _Selected, undefined) -> diff --git a/apps/emqx_authz/src/emqx_authz_utils.erl b/apps/emqx_authz/src/emqx_authz_utils.erl index a24df28cd..2e547941a 100644 --- a/apps/emqx_authz/src/emqx_authz_utils.erl +++ b/apps/emqx_authz/src/emqx_authz_utils.erl @@ -43,33 +43,35 @@ create_resource(Module, Config) -> create_resource(ResourceId, Module, Config). create_resource(ResourceId, Module, Config) -> - {ok, _Data} = emqx_resource:create_local( + Result = emqx_resource:create_local( ResourceId, ?RESOURCE_GROUP, Module, Config, - #{} - ). + #{start_after_created => false} + ), + start_resource_if_enabled(Result, ResourceId, Config). -update_resource(Module, #{annotations := #{id := ResourceId}} = Source) -> +update_resource(Module, #{annotations := #{id := ResourceId}} = Config) -> Result = case emqx_resource:recreate_local( ResourceId, Module, - Source + Config, + #{start_after_created => false} ) of {ok, _} -> {ok, ResourceId}; {error, Reason} -> {error, Reason} end, - case Source of - #{enable := true} -> - Result; - #{enable := false} -> - ok = emqx_resource:stop(ResourceId), - Result - end. + start_resource_if_enabled(Result, ResourceId, Config). + +start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) -> + _ = emqx_resource:start(ResourceId), + Result; +start_resource_if_enabled(Result, _ResourceId, _Config) -> + Result. cleanup_resources() -> lists:foreach(