|
26 | 26 |
|
27 | 27 | -define(EVAL_MSG, member_eval).
|
28 | 28 |
|
29 |
| --record(state, {timer_ref :: reference(), |
| 29 | +-record(state, {timer_ref :: reference() | undefined, |
30 | 30 | default_interval :: non_neg_integer(),
|
31 | 31 | short_interval :: non_neg_integer(),
|
32 | 32 | target_group_size :: non_neg_integer() | undefined}).
|
@@ -59,15 +59,24 @@ init([]) ->
|
59 | 59 | ?SHORT_INTERVAL),
|
60 | 60 | TargetGroupSize = rabbit_misc:get_env(rabbit, member_eval_target_group_size,
|
61 | 61 | 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. |
67 | 74 |
|
68 | 75 | handle_call(_Request, _From, State) ->
|
69 | 76 | {reply, ok, State}.
|
70 | 77 |
|
| 78 | +handle_cast(nodechange, #state{timer_ref = undefined} = State) -> |
| 79 | + {noreply, State, hibernate}; |
71 | 80 | handle_cast(nodechange, #state{timer_ref = OldRef,
|
72 | 81 | short_interval = Time} = State) ->
|
73 | 82 | _ = erlang:cancel_timer(OldRef),
|
|
0 commit comments