Skip to content

Commit 37bc300

Browse files
committed
Dont allow QQ grow for target quorum cluster size less than 0 in rabbit_quorum_queue api
1 parent 32a73fa commit 37bc300

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
@@ -1548,7 +1548,7 @@ grow(Node, VhostSpec, QueueSpec, Strategy, Membership) when is_atom(Node) ->
15481548
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec) ];
15491549

15501550
grow(QuorumClusterSize, VhostSpec, QueueSpec, Strategy, Membership)
1551-
when is_integer(QuorumClusterSize) ->
1551+
when is_integer(QuorumClusterSize), QuorumClusterSize > 0 ->
15521552
Running = rabbit_nodes:list_running(),
15531553
TotalRunning = length(Running),
15541554

@@ -1577,7 +1577,14 @@ grow(QuorumClusterSize, VhostSpec, QueueSpec, Strategy, Membership)
15771577
amqqueue:get_type(Q) == ?MODULE,
15781578
matches_strategy(Strategy, get_nodes(Q)),
15791579
is_match(amqqueue:get_vhost(Q), VhostSpec) andalso
1580-
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec)]).
1580+
is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec)]);
1581+
1582+
grow(QuorumClusterSize, _VhostSpec, _QueueSpec, _Strategy, _Membership)
1583+
when is_integer(QuorumClusterSize) ->
1584+
rabbit_log:warning(
1585+
"cannot grow queues to a quorum cluster size less than zero (~tp)",
1586+
[QuorumClusterSize]),
1587+
{error, bad_quorum_cluster_size}.
15811588

15821589
maybe_grow(Q, Node, Membership, Size) ->
15831590
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
@@ -1591,13 +1591,22 @@ grow_queue(Config) ->
15911591
%% shrink all queues again
15921592
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_quorum_queue,
15931593
force_all_queues_shrink_member_to_current_member, []),
1594-
15951594
assert_grown_queues(QQs, Server0, TargetClusterSize_1, MsgCount),
15961595

15971596
%% grow queues to quorum cluster size > '5' (limit = 5).
15981597
TargetClusterSize_10 = 10,
15991598
rpc:call(Server0, rabbit_quorum_queue, grow, [TargetClusterSize_10, <<"/">>, <<".*">>, all]),
1600-
assert_grown_queues(QQs, Server0, TargetClusterSize_5, MsgCount).
1599+
assert_grown_queues(QQs, Server0, TargetClusterSize_5, MsgCount),
1600+
1601+
%% shrink all queues again
1602+
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_quorum_queue,
1603+
force_all_queues_shrink_member_to_current_member, []),
1604+
assert_grown_queues(QQs, Server0, TargetClusterSize_1, MsgCount),
1605+
1606+
%% attempt to grow queues to quorum cluster size < '0'.
1607+
BadTargetClusterSize = -5,
1608+
?assertEqual({error, bad_quorum_cluster_size},
1609+
rpc:call(Server0, rabbit_quorum_queue, grow, [BadTargetClusterSize, <<"/">>, <<".*">>, all])).
16011610

16021611
assert_grown_queues(Qs, Node, TargetClusterSize, MsgCount) ->
16031612
[begin

0 commit comments

Comments
 (0)