Skip to content
This repository was archived by the owner on Nov 17, 2020. It is now read-only.

Commit b2bd456

Browse files
Merge pull request #197 from rabbitmq/rabbitmq-common-196
Stop emitting stats before hibernate on gen_server2
2 parents 4d821aa + 0543b47 commit b2bd456

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/gen_server2.erl

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -708,8 +708,9 @@ hibernate(GS2State = #gs2_state { timeout_state = TimeoutState }) ->
708708
proc_lib:hibernate(?MODULE, wake_hib,
709709
[GS2State #gs2_state { timeout_state = TS }]).
710710

711-
pre_hibernate(GS2State = #gs2_state { state = State,
712-
mod = Mod }) ->
711+
pre_hibernate(GS2State0 = #gs2_state { state = State,
712+
mod = Mod }) ->
713+
GS2State = maybe_stop_stats(GS2State0),
713714
case erlang:function_exported(Mod, handle_pre_hibernate, 1) of
714715
true ->
715716
case catch Mod:handle_pre_hibernate(State) of
@@ -722,8 +723,10 @@ pre_hibernate(GS2State = #gs2_state { state = State,
722723
hibernate(GS2State)
723724
end.
724725

725-
post_hibernate(GS2State = #gs2_state { state = State,
726-
mod = Mod }) ->
726+
post_hibernate(GS2State0 = #gs2_state { state = State,
727+
mod = Mod,
728+
init_stats_fun = InitStatsFun }) ->
729+
GS2State = InitStatsFun(GS2State0),
727730
case erlang:function_exported(Mod, handle_post_hibernate, 1) of
728731
true ->
729732
case catch Mod:handle_post_hibernate(State) of
@@ -1381,5 +1384,10 @@ emit_stats(GS2State = #gs2_state{queue = Queue}) ->
13811384
#gs2_state.timer, emit_gen_server2_stats).
13821385

13831386
stop_stats(GS2State) ->
1384-
_ = rabbit_event:stop_stats_timer(GS2State, #gs2_state.timer),
1387+
maybe_stop_stats(GS2State),
13851388
rabbit_core_metrics:gen_server2_deleted(self()).
1389+
1390+
maybe_stop_stats(#gs2_state{timer = undefined} = GS2State) ->
1391+
GS2State;
1392+
maybe_stop_stats(GS2State) ->
1393+
rabbit_event:stop_stats_timer(GS2State, #gs2_state.timer).

0 commit comments

Comments
 (0)