Skip to content

Commit abd3d19

Browse files
committed
Hibernate process if not activated
1 parent bfcf3e9 commit abd3d19

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

deps/rabbit/priv/schema/rabbit.schema

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2492,6 +2492,10 @@ end}.
24922492
%% Queue membership evaluation
24932493
%%
24942494

2495+
{mapping, "queue_membership_evaluation.enabled", "rabbit.member_eval_enabled", [
2496+
{datatype, {enum, [true, false]}}]}.
2497+
2498+
24952499
{mapping, "queue_membership_evaluation.default_timeout", "rabbit.member_eval_default_timeout", [
24962500
{datatype, integer}, {validators, ["non_negative_integer"]}
24972501
]}.

deps/rabbit/src/rabbit_queue_member_eval.erl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
-define(EVAL_MSG, member_eval).
2828

29-
-record(state, {timer_ref :: reference(),
29+
-record(state, {timer_ref :: reference() | undefined,
3030
default_interval :: non_neg_integer(),
3131
short_interval :: non_neg_integer(),
3232
target_group_size :: non_neg_integer() | undefined}).
@@ -59,15 +59,24 @@ init([]) ->
5959
?SHORT_INTERVAL),
6060
TargetGroupSize = rabbit_misc:get_env(rabbit, member_eval_target_group_size,
6161
undefined),
62-
Ref = erlang:send_after(DefaultInterval, self(), ?EVAL_MSG),
63-
{ok, #state{timer_ref = Ref,
64-
default_interval = DefaultInterval,
65-
short_interval = ShortInterval,
66-
target_group_size = TargetGroupSize}}.
62+
Enabled = rabbit_misc:get_env(rabbit, member_eval_enabled,
63+
false),
64+
State = #state{default_interval = DefaultInterval,
65+
short_interval = ShortInterval,
66+
target_group_size = TargetGroupSize},
67+
case Enabled of
68+
true ->
69+
Ref = erlang:send_after(DefaultInterval, self(), ?EVAL_MSG),
70+
{ok, State#state{timer_ref = Ref}};
71+
false ->
72+
{ok, State, hibernate}
73+
end.
6774

6875
handle_call(_Request, _From, State) ->
6976
{reply, ok, State}.
7077

78+
handle_cast(nodechange, #state{timer_ref = undefined} = State) ->
79+
{noreply, State, hibernate};
7180
handle_cast(nodechange, #state{timer_ref = OldRef,
7281
short_interval = Time} = State) ->
7382
_ = erlang:cancel_timer(OldRef),

0 commit comments

Comments
 (0)