Skip to content

Commit c8e1527

Browse files
committed
Filter out nodes being drained
1 parent e342cc1 commit c8e1527

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

deps/rabbit/src/rabbit_queue_member_eval.erl

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,25 +113,30 @@ eval_quorum_members(_ExpectedNodes, _Running, [], _TargetSize, Result) ->
113113
eval_quorum_members(ExpectedNodes, Running, [Q | LocalLeaders], TargetSize, OldResult) ->
114114
{ok, Members, {_, LeaderNode}} = ra:members(amqqueue:get_pid(Q)),
115115

116-
%% Check if Leader is indeed this node
117-
Result = case LeaderNode =:= node() of
118-
true ->
119-
MemberNodes = [Node || {_, Node} <- Members],
120-
Remove = MemberNodes -- ExpectedNodes,
121-
case Remove of
122-
[] ->
123-
add_member(Q, Running, MemberNodes, get_target_size(Q, TargetSize));
124-
_ ->
125-
remove_members(Q, Remove)
126-
end;
127-
false ->
128-
noop
129-
end,
116+
Result =
117+
maybe
118+
%% Check if Leader is indeed this node
119+
LeaderNode ?= node(),
120+
%% And that this not is not in maintenance mode
121+
true ?= not rabbit_maintenance:is_being_drained_local_read(node()),
122+
MemberNodes = [Node || {_, Node} <- Members],
123+
Remove = MemberNodes -- ExpectedNodes,
124+
case Remove of
125+
[] ->
126+
add_member(Q, Running, MemberNodes, get_target_size(Q, TargetSize));
127+
_ ->
128+
remove_members(Q, Remove)
129+
end
130+
else
131+
_ ->
132+
noop
133+
end,
130134
eval_quorum_members(ExpectedNodes, Running, LocalLeaders, TargetSize,
131135
update_result(OldResult, Result)).
132136

133137
add_member(Q, Running, MemberNodes, TargetSize) ->
134-
New = Running -- MemberNodes,
138+
%% Filter out any new nodes under maintenance
139+
New = rabbit_maintenance:filter_out_drained_nodes_local_read(Running -- MemberNodes),
135140
case should_add_node(MemberNodes, New, Q, TargetSize) of
136141
true ->
137142
%% In the future, sort the list of new nodes based on load,

0 commit comments

Comments
 (0)