fix(resource): discard dry_run resource down alarm

This commit is contained in:
Shawn 2022-05-31 10:51:01 +08:00
parent 9890b5aa5a
commit 9f69e3cad6
1 changed files with 19 additions and 11 deletions

View File

@ -214,6 +214,7 @@ init(Data) ->
{ok, connecting, Data, {next_event, internal, try_connect}}. {ok, connecting, Data, {next_event, internal, try_connect}}.
terminate(_Reason, _State, Data) -> terminate(_Reason, _State, Data) ->
_ = maybe_clear_alarm(Data#data.id),
ets:delete(?ETS_TABLE, Data#data.id), ets:delete(?ETS_TABLE, Data#data.id),
ok. ok.
@ -342,6 +343,7 @@ do_stop(#data{state = undefined} = _Data) ->
do_stop(Data) -> do_stop(Data) ->
Result = emqx_resource:call_stop(Data#data.id, Data#data.mod, Data#data.state), Result = emqx_resource:call_stop(Data#data.id, Data#data.mod, Data#data.state),
ets:delete(?ETS_TABLE, Data#data.id), ets:delete(?ETS_TABLE, Data#data.id),
_ = maybe_clear_alarm(Data#data.id),
Result. Result.
proc_name(Id) -> proc_name(Id) ->
@ -386,22 +388,28 @@ with_health_check(Data, Func) ->
ResId = Data#data.id, ResId = Data#data.id,
HCRes = emqx_resource:call_health_check(ResId, Data#data.mod, Data#data.state), HCRes = emqx_resource:call_health_check(ResId, Data#data.mod, Data#data.state),
{Status, NewState, Err} = parse_health_check_result(HCRes, Data#data.state), {Status, NewState, Err} = parse_health_check_result(HCRes, Data#data.state),
_ = _ = maybe_alarm_resource_down(connected, ResId),
case Status of
connected ->
ok;
_ ->
emqx_alarm:activate(
ResId,
#{resource_id => ResId, reason => resource_down},
<<"resource down: ", ResId/binary>>
)
end,
UpdatedData = Data#data{ UpdatedData = Data#data{
state = NewState, status = Status, error = Err state = NewState, status = Status, error = Err
}, },
Func(Status, UpdatedData). Func(Status, UpdatedData).
maybe_alarm_resource_down(connected, _ResId) ->
ok;
maybe_alarm_resource_down(_Status, <<?TEST_ID_PREFIX, _/binary>>) ->
ok;
maybe_alarm_resource_down(_Status, ResId) ->
emqx_alarm:activate(
ResId,
#{resource_id => ResId, reason => resource_down},
<<"resource down: ", ResId/binary>>
).
maybe_clear_alarm(<<?TEST_ID_PREFIX, _/binary>>) ->
ok;
maybe_clear_alarm(ResId) ->
emqx_alarm:deactivate(ResId).
parse_health_check_result(Status, OldState) when ?IS_STATUS(Status) -> parse_health_check_result(Status, OldState) when ?IS_STATUS(Status) ->
{Status, OldState, undefined}; {Status, OldState, undefined};
parse_health_check_result({Status, NewState}, _OldState) when ?IS_STATUS(Status) -> parse_health_check_result({Status, NewState}, _OldState) when ?IS_STATUS(Status) ->