Skip to content

Commit 7d8b870

Browse files
kjnilssonmergify[bot]
authored andcommitted
QQ: improve shrink_all to retry once if cluster change is not permitted.
This could happen if a leader election occurred just before the the member removal was initiated. In particular this could happen when stopping and forgetting an existing rabbit node. (cherry picked from commit 7b5d339)
1 parent bc68570 commit 7d8b870

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,6 +1349,23 @@ shrink_all(Node) ->
13491349
case delete_member(Q, Node) of
13501350
ok ->
13511351
{QName, {ok, Size-1}};
1352+
{error, cluster_change_not_permitted} ->
1353+
%% this could be timing related and due to a new leader just being
1354+
%% elected but it's noop command not been committed yet.
1355+
%% lets sleep and retry once
1356+
rabbit_log:info("~ts: failed to remove member (replica) on node ~w "
1357+
"as cluster change is not permitted. "
1358+
"retrying once in 500ms",
1359+
[rabbit_misc:rs(QName), Node]),
1360+
timer:sleep(500),
1361+
case delete_member(Q, Node) of
1362+
ok ->
1363+
{QName, {ok, Size-1}};
1364+
{error, Err} ->
1365+
rabbit_log:warning("~ts: failed to remove member (replica) on node ~w, error: ~w",
1366+
[rabbit_misc:rs(QName), Node, Err]),
1367+
{QName, {error, Size, Err}}
1368+
end;
13521369
{error, Err} ->
13531370
rabbit_log:warning("~ts: failed to remove member (replica) on node ~w, error: ~w",
13541371
[rabbit_misc:rs(QName), Node, Err]),

0 commit comments

Comments
 (0)