diff --git a/apps/emqx_modules/src/emqx_modules.app.src b/apps/emqx_modules/src/emqx_modules.app.src index fa68e17cb..20f8a76fc 100644 --- a/apps/emqx_modules/src/emqx_modules.app.src +++ b/apps/emqx_modules/src/emqx_modules.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_modules, [ {description, "EMQX Modules"}, - {vsn, "5.0.8"}, + {vsn, "5.0.9"}, {modules, []}, {applications, [kernel, stdlib, emqx]}, {mod, {emqx_modules_app, []}}, diff --git a/apps/emqx_modules/src/emqx_modules_schema.erl b/apps/emqx_modules/src/emqx_modules_schema.erl index d2d6258d1..38451e5c7 100644 --- a/apps/emqx_modules/src/emqx_modules_schema.erl +++ b/apps/emqx_modules/src/emqx_modules_schema.erl @@ -88,8 +88,13 @@ regular_expression(_) -> undefined. is_re(Bin) -> case re:compile(Bin) of - {ok, _} -> ok; - {error, Reason} -> {error, {Bin, Reason}} + {ok, _} -> + ok; + {error, Reason} -> + {error, #{ + regexp => Bin, + compile_error => Reason + }} end. array(Name, Meta) -> {Name, ?HOCON(?ARRAY(?R_REF(Name)), Meta)}. diff --git a/apps/emqx_modules/src/emqx_rewrite.erl b/apps/emqx_modules/src/emqx_rewrite.erl index 79465045d..ec513e603 100644 --- a/apps/emqx_modules/src/emqx_rewrite.erl +++ b/apps/emqx_modules/src/emqx_rewrite.erl @@ -67,8 +67,12 @@ list() -> emqx_conf:get_raw([<<"rewrite">>], []). update(Rules0) -> - {ok, _} = emqx_conf:update([rewrite], Rules0, #{override_to => cluster}), - ok. + case emqx_conf:update([rewrite], Rules0, #{override_to => cluster}) of + {ok, _} -> + ok; + {error, Reason} -> + throw(Reason) + end. post_config_update(_KeyPath, _Config, Rules, _OldConf, _AppEnvs) -> register_hook(Rules). diff --git a/apps/emqx_modules/test/emqx_rewrite_SUITE.erl b/apps/emqx_modules/test/emqx_rewrite_SUITE.erl index 85688d3db..24a07d246 100644 --- a/apps/emqx_modules/test/emqx_rewrite_SUITE.erl +++ b/apps/emqx_modules/test/emqx_rewrite_SUITE.erl @@ -215,16 +215,16 @@ t_update_re_failed(_Config) -> <<"action">> => <<"publish">> } ], - ?assertError( - {badmatch, - {error, - {_, [ - #{ - kind := validation_error, - reason := {Re, {"nothing to repeat", 0}}, - value := Re - } - ]}}}, + ?assertThrow( + #{ + kind := validation_error, + path := "rewrite.1.re", + reason := #{ + regexp := <<"*^test/*">>, + compile_error := {"nothing to repeat", 0} + }, + value := <<"*^test/*">> + }, emqx_rewrite:update(Rules) ), ok.