feat(resource): reset metrics when stopping a resource
This commit is contained in:
parent
ee4c723fcb
commit
62eeb4b8e8
|
@ -507,13 +507,16 @@ start_resource(Data, From) ->
|
|||
|
||||
stop_resource(#data{state = undefined, id = ResId} = _Data) ->
|
||||
_ = maybe_clear_alarm(ResId),
|
||||
ok = emqx_metrics_worker:reset_metrics(?RES_METRICS, ResId),
|
||||
ok;
|
||||
stop_resource(Data) ->
|
||||
%% We don't care the return value of the Mod:on_stop/2.
|
||||
%% The callback mod should make sure the resource is stopped after on_stop/2
|
||||
%% is returned.
|
||||
ResId = Data#data.id,
|
||||
_ = emqx_resource:call_stop(Data#data.manager_id, Data#data.mod, Data#data.state),
|
||||
_ = maybe_clear_alarm(Data#data.id),
|
||||
_ = maybe_clear_alarm(ResId),
|
||||
ok = emqx_metrics_worker:reset_metrics(?RES_METRICS, ResId),
|
||||
ok.
|
||||
|
||||
make_test_id() ->
|
||||
|
|
|
@ -502,6 +502,10 @@ t_stop_start(_) ->
|
|||
#{<<"name">> => <<"test_resource">>}
|
||||
),
|
||||
|
||||
%% add some metrics to test their persistence
|
||||
emqx_resource_metrics:batching_change(?ID, 5),
|
||||
?assertEqual(5, emqx_resource_metrics:batching_get(?ID)),
|
||||
|
||||
{ok, _} = emqx_resource:check_and_recreate(
|
||||
?ID,
|
||||
?TEST_RESOURCE,
|
||||
|
@ -513,6 +517,9 @@ t_stop_start(_) ->
|
|||
|
||||
?assert(is_process_alive(Pid0)),
|
||||
|
||||
%% metrics are reset when recreating
|
||||
?assertEqual(0, emqx_resource_metrics:batching_get(?ID)),
|
||||
|
||||
ok = emqx_resource:stop(?ID),
|
||||
|
||||
?assertNot(is_process_alive(Pid0)),
|
||||
|
@ -527,7 +534,15 @@ t_stop_start(_) ->
|
|||
|
||||
{ok, #{pid := Pid1}} = emqx_resource:query(?ID, get_state),
|
||||
|
||||
?assert(is_process_alive(Pid1)).
|
||||
?assert(is_process_alive(Pid1)),
|
||||
|
||||
%% now stop while resetting the metrics
|
||||
emqx_resource_metrics:batching_change(?ID, 5),
|
||||
?assertEqual(5, emqx_resource_metrics:batching_get(?ID)),
|
||||
ok = emqx_resource:stop(?ID),
|
||||
?assertEqual(0, emqx_resource_metrics:batching_get(?ID)),
|
||||
|
||||
ok.
|
||||
|
||||
t_stop_start_local(_) ->
|
||||
{error, _} = emqx_resource:check_and_create_local(
|
||||
|
|
Loading…
Reference in New Issue