diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.erl b/apps/emqx_rule_engine/src/emqx_rule_engine.erl index b458469da..0f62a2ac7 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -82,13 +82,16 @@ %% redefine this macro to confine the appup scope -undef(RAISE). -define(RAISE(_EXP_, _ERROR_CONTEXT_), + ?RAISE(_EXP_, do_nothing, _ERROR_CONTEXT_)). +-define(RAISE(_EXP_, _EXP_ON_FAIL_, _ERROR_CONTEXT_), fun() -> try (_EXP_) catch throw : Reason -> throw({_ERROR_CONTEXT_, Reason}); _EXCLASS_:_EXCPTION_:_ST_ -> - throw({_ERROR_CONTEXT_, {_EXCPTION_, _EXCPTION_, _ST_}}) + _EXP_ON_FAIL_, + throw({_ERROR_CONTEXT_, {_EXCLASS_, _EXCPTION_, _ST_}}) end end()). @@ -496,7 +499,12 @@ refresh_resource(Type) when is_atom(Type) -> refresh_resource(#resource{id = ResId, type = Type, config = Config}) -> {ok, #resource_type{on_create = {M, F}}} = emqx_rule_registry:find_resource_type(Type), - ok = emqx_rule_engine:init_resource_with_retrier(M, F, ResId, Config). + try + init_resource_with_retrier(M, F, ResId, Config) + catch + throw:Reason -> + ?LOG_SENSITIVE(warning, "refresh_resource failed: ~0p", [Reason]) + end. -spec(refresh_rules_when_boot() -> ok). refresh_rules_when_boot() -> @@ -675,16 +683,12 @@ init_resource(Module, OnCreate, ResId, Config) -> emqx_rule_registry:add_resource_params(ResParams). init_resource_with_retrier(Module, OnCreate, ResId, Config) -> - try - Params = Module:OnCreate(ResId, Config), - ResParams = #resource_params{id = ResId, - params = Params, - status = #{is_alive => true}}, - emqx_rule_registry:add_resource_params(ResParams) - catch Class:Reason:ST -> - emqx_rule_monitor:ensure_resource_retrier(ResId), - erlang:raise(Class, {init_resource, Reason}, ST) - end. + Params = ?RAISE(Module:OnCreate(ResId, Config), + emqx_rule_monitor:ensure_resource_retrier(ResId), {Module, OnCreate}), + ResParams = #resource_params{id = ResId, + params = Params, + status = #{is_alive => true}}, + emqx_rule_registry:add_resource_params(ResParams). init_action(Module, OnCreate, ActionInstId, Params) -> ok = emqx_rule_metrics:create_metrics(ActionInstId), diff --git a/apps/emqx_stomp/test/emqx_stomp_SUITE.erl b/apps/emqx_stomp/test/emqx_stomp_SUITE.erl index 0c02e9f29..8aca570ff 100644 --- a/apps/emqx_stomp/test/emqx_stomp_SUITE.erl +++ b/apps/emqx_stomp/test/emqx_stomp_SUITE.erl @@ -349,7 +349,7 @@ t_1000_msg_send(_) -> receive {deliver, Topic, _Msg}-> ok - after 100 -> + after 5000 -> ?assert(false, "waiting message timeout") end end, diff --git a/build b/build index 6206d9f89..176b830ed 100755 --- a/build +++ b/build @@ -62,7 +62,18 @@ log() { echo "===< $msg" } +delete_unwanted_file() { + if [ -e "${1}" ]; then + log "Deleting file: ${1}" + rm -f "${1}" + else + log "Cannot delete file: ${1} -- file not found" + fi +} + make_rel() { + ./rebar3 as "$PROFILE" release + delete_unwanted_file _build/"${PROFILE}"/rel/emqx/lib/certifi*/priv/cacerts.pem ./rebar3 as "$PROFILE" tar }