Просмотр исходного кода

fix: try-catch optional `on_config_changed/2` plugin app callback

JimMoen 1 год назад
Родитель
Сommit
e6bfc14cc9
1 измененных файлов с 12 добавлено и 1 удалено
  1. 12 1
      apps/emqx_plugins/src/emqx_plugins.erl

+ 12 - 1
apps/emqx_plugins/src/emqx_plugins.erl

@@ -380,7 +380,18 @@ maybe_call_on_config_changed(NameVsn, NewConf) ->
         {ok, PluginAppModule} ?= app_module_name(NameVsn),
         true ?= erlang:function_exported(PluginAppModule, FuncName, 2),
         {ok, OldConf} = get_config(NameVsn),
-        _ = erlang:apply(PluginAppModule, FuncName, [OldConf, NewConf])
+        try erlang:apply(PluginAppModule, FuncName, [OldConf, NewConf]) of
+            _ -> ok
+        catch
+            Class:CatchReason:Stacktrace ->
+                ?SLOG(error, #{
+                    msg => "failed_to_call_on_config_changed",
+                    exception => Class,
+                    reason => CatchReason,
+                    stacktrace => Stacktrace
+                }),
+                ok
+        end
     else
         {error, Reason} ->
             ?SLOG(info, #{msg => "failed_to_call_on_config_changed", reason => Reason});