Skip to content

Commit 41c55db

Browse files
committed
Dont allow QQ grow for target quorum cluster size less than 0 in rabbit_quorum_queue api
1 parent a79170e commit 41c55db

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,7 +1569,7 @@ grow(Node, VhostSpec, QueueSpec, Strategy, Membership) when is_atom(Node) ->
15691569
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec) ];
15701570

15711571
grow(QuorumClusterSize, VhostSpec, QueueSpec, Strategy, Membership)
1572-
when is_integer(QuorumClusterSize) ->
1572+
when is_integer(QuorumClusterSize), QuorumClusterSize > 0 ->
15731573
Running = rabbit_nodes:list_running(),
15741574
TotalRunning = length(Running),
15751575

@@ -1598,7 +1598,14 @@ grow(QuorumClusterSize, VhostSpec, QueueSpec, Strategy, Membership)
15981598
amqqueue:get_type(Q) == ?MODULE,
15991599
matches_strategy(Strategy, get_nodes(Q)),
16001600
is_match(amqqueue:get_vhost(Q), VhostSpec) andalso
1601-
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec)]).
1601+
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec)]);
1602+
1603+
grow(QuorumClusterSize, _VhostSpec, _QueueSpec, _Strategy, _Membership)
1604+
when is_integer(QuorumClusterSize) ->
1605+
rabbit_log:warning(
1606+
"cannot grow queues to a quorum cluster size less than zero (~tp)",
1607+
[QuorumClusterSize]),
1608+
{error, bad_quorum_cluster_size}.
16021609

16031610
maybe_grow(Q, Node, Membership, Size) ->
16041611
QName = amqqueue:get_name(Q),

deps/rabbit/test/quorum_queue_SUITE.erl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,13 +1845,22 @@ grow_queue(Config) ->
18451845
%% shrink all queues again
18461846
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_quorum_queue,
18471847
force_all_queues_shrink_member_to_current_member, []),
1848-
18491848
assert_grown_queues(QQs, Server0, TargetClusterSize_1, MsgCount),
18501849

18511850
%% grow queues to quorum cluster size > '5' (limit = 5).
18521851
TargetClusterSize_10 = 10,
18531852
rpc:call(Server0, rabbit_quorum_queue, grow, [TargetClusterSize_10, <<"/">>, <<".*">>, all]),
1854-
assert_grown_queues(QQs, Server0, TargetClusterSize_5, MsgCount).
1853+
assert_grown_queues(QQs, Server0, TargetClusterSize_5, MsgCount),
1854+
1855+
%% shrink all queues again
1856+
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_quorum_queue,
1857+
force_all_queues_shrink_member_to_current_member, []),
1858+
assert_grown_queues(QQs, Server0, TargetClusterSize_1, MsgCount),
1859+
1860+
%% attempt to grow queues to quorum cluster size < '0'.
1861+
BadTargetClusterSize = -5,
1862+
?assertEqual({error, bad_quorum_cluster_size},
1863+
rpc:call(Server0, rabbit_quorum_queue, grow, [BadTargetClusterSize, <<"/">>, <<".*">>, all])).
18551864

18561865
assert_grown_queues(Qs, Node, TargetClusterSize, MsgCount) ->
18571866
[begin

0 commit comments

Comments
 (0)