From ee2423ee618dde17a745e9d4e2ee6e6aed4cdef9 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Mon, 11 Apr 2022 15:53:07 +0800 Subject: [PATCH] fix: usort plugins name --- src/emqx.appup.src | 54 +++++++++++++++++++++++++++++--------------- src/emqx_plugins.erl | 21 +++++++++++++---- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 75c35386d..18c3fb04d 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -26,7 +26,8 @@ {load_module, emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_misc,brutal_purge,soft_purge,[]} + {load_module, emqx_misc,brutal_purge,soft_purge,[]}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {"4.2.1", [ {add_module, emqx_congestion}, @@ -51,7 +52,8 @@ {load_module, emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_misc,brutal_purge,soft_purge,[]} + {load_module, emqx_misc,brutal_purge,soft_purge,[]}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.[23]">>, [ {add_module, emqx_congestion}, @@ -74,7 +76,8 @@ {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.4">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -96,7 +99,8 @@ {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.5">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -118,7 +122,8 @@ {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.[6-7]">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -134,7 +139,8 @@ {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.8">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -145,7 +151,8 @@ {load_module, emqx_limiter, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, - {load_module, emqx_os_mon, brutal_purge, soft_purge, []} + {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.9">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -155,14 +162,16 @@ {load_module, emqx_limiter, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, - {load_module, emqx_os_mon, brutal_purge, soft_purge, []} + {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.10">>, [ {load_module, emqx_channel, brutal_purge, soft_purge, []}, {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, - {load_module, emqx_alarm, brutal_purge, soft_purge, []} + {load_module, emqx_alarm, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ], @@ -191,7 +200,8 @@ {load_module, emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_misc,brutal_purge,soft_purge,[]} + {load_module, emqx_misc,brutal_purge,soft_purge,[]}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {"4.2.1", [ {load_module, emqx_shared_sub, brutal_purge, soft_purge, []}, @@ -216,7 +226,8 @@ {load_module, emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_misc,brutal_purge,soft_purge,[]} + {load_module, emqx_misc,brutal_purge,soft_purge,[]}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.[23]">>, [ {load_module, emqx_shared_sub, brutal_purge, soft_purge, []}, @@ -239,7 +250,8 @@ {load_module, emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, {load_module, emqx_app, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.4">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -261,7 +273,8 @@ {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.5">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -283,7 +296,8 @@ {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.[6-7]">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -299,7 +313,8 @@ {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, {load_module, emqx_misc,brutal_purge,soft_purge,[]}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.8">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -310,7 +325,8 @@ {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, {load_module, emqx_alarm, brutal_purge, soft_purge, []}, - {load_module, emqx_limiter, brutal_purge, soft_purge, []} + {load_module, emqx_limiter, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.9">>, [ {load_module, emqx_frame, brutal_purge, soft_purge, []}, @@ -320,14 +336,16 @@ {load_module, emqx_limiter, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, - {load_module, emqx_alarm, brutal_purge, soft_purge, []} + {load_module, emqx_alarm, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<"4.2.10">>, [ {load_module, emqx_channel, brutal_purge, soft_purge, []}, {load_module, emqx_frame, brutal_purge, soft_purge, []}, {load_module, emqx_app, brutal_purge, soft_purge, []}, {load_module, emqx_os_mon, brutal_purge, soft_purge, []}, - {load_module, emqx_alarm, brutal_purge, soft_purge, []} + {load_module, emqx_alarm, brutal_purge, soft_purge, []}, + {load_module, emqx_plugins, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ] diff --git a/src/emqx_plugins.erl b/src/emqx_plugins.erl index faa6abae3..e22cd2058 100644 --- a/src/emqx_plugins.erl +++ b/src/emqx_plugins.erl @@ -103,7 +103,7 @@ unload(PluginName) when is_atom(PluginName) -> ?LOG(error, "Plugin ~s is not started", [PluginName]), {error, not_started}; {_, _} -> - unload_plugin(PluginName, true) + unload_plugin(PluginName, true) end. reload(PluginName) when is_atom(PluginName)-> @@ -204,10 +204,21 @@ with_loaded_file(File, SuccFun) -> end. filter_plugins(Names) -> - lists:filtermap(fun(Name1) when is_atom(Name1) -> {true, Name1}; - ({Name1, true}) -> {true, Name1}; - ({_Name1, false}) -> false - end, Names). + filter_plugins(Names, []). + +filter_plugins([], Plugins) -> + lists:reverse(Plugins); +filter_plugins([{Name, Load} | Names], Plugins) -> + case {Load, lists:member(Name, Plugins)} of + {true, false} -> + filter_plugins(Names, [Name | Plugins]); + {false, true} -> + filter_plugins(Names, Plugins -- [Name]); + _ -> + filter_plugins(Names, Plugins) + end; +filter_plugins([Name | Names], Plugins) when is_atom(Name) -> + filter_plugins([{Name, true} | Names], Plugins). load_plugins(Names, Persistent) -> Plugins = list(), NotFound = Names -- names(Plugins),