Skip to content

Commit b89ff46

Browse files
author
Alex Valiushko
committed
add back-compatible CLI calls
1 parent a3a521c commit b89ff46

File tree

5 files changed

+38
-20
lines changed

5 files changed

+38
-20
lines changed

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
-export([format_ra_event/3]).
4949
-export([cleanup_data_dir/0]).
5050
-export([shrink_all/1,
51+
grow/4,
5152
grow/5]).
5253
-export([transfer_leadership/2, get_replicas/1, queue_length/1]).
5354
-export([file_handle_leader_reservation/1,
@@ -82,6 +83,7 @@
8283
-include_lib("stdlib/include/qlc.hrl").
8384
-include_lib("rabbit_common/include/rabbit.hrl").
8485
-include("amqqueue.hrl").
86+
-include("vhost.hrl").
8587

8688
-type msg_id() :: non_neg_integer().
8789
-type qmsg() :: {rabbit_types:r('queue'), pid(), msg_id(), boolean(),
@@ -1150,7 +1152,7 @@ get_sys_status(Proc) ->
11501152

11511153
end.
11521154

1153-
add_member(VHost, Name, Node, VoterStatus, Timeout) ->
1155+
add_member(VHost, Name, Node, Membership, Timeout) when ?is_vhost(VHost) ->
11541156
QName = #resource{virtual_host = VHost, name = Name, kind = queue},
11551157
rabbit_log:debug("Asked to add a replica for queue ~ts on node ~ts", [rabbit_misc:rs(QName), Node]),
11561158
case rabbit_amqqueue:lookup(QName) of
@@ -1168,7 +1170,7 @@ add_member(VHost, Name, Node, VoterStatus, Timeout) ->
11681170
rabbit_log:debug("Quorum ~ts already has a replica on node ~ts", [rabbit_misc:rs(QName), Node]),
11691171
ok;
11701172
false ->
1171-
add_member(Q, Node, VoterStatus, Timeout)
1173+
add_member(Q, Node, Membership, Timeout)
11721174
end
11731175
end;
11741176
{ok, _Q} ->
@@ -1183,6 +1185,9 @@ add_member(Q, Node) ->
11831185
add_member(Q, Node, Membership) ->
11841186
add_member(Q, Node, Membership, ?ADD_MEMBER_TIMEOUT).
11851187

1188+
add_member(VHost, Name, Node, Timeout) when ?is_vhost(VHost) ->
1189+
%% NOTE needed to pass mixed cluster tests.
1190+
add_member(VHost, Name, Node, promotable, Timeout);
11861191
add_member(Q, Node, Membership, Timeout) when ?amqqueue_is_quorum(Q) ->
11871192
{RaName, _} = amqqueue:get_pid(Q),
11881193
QName = amqqueue:get_name(Q),
@@ -1305,10 +1310,14 @@ shrink_all(Node) ->
13051310
amqqueue:get_type(Q) == ?MODULE,
13061311
lists:member(Node, get_nodes(Q))].
13071312

1313+
1314+
grow(Node, VhostSpec, QueueSpec, Strategy) ->
1315+
grow(Node, VhostSpec, QueueSpec, Strategy, promotable).
1316+
13081317
-spec grow(node(), binary(), binary(), all | even, membership()) ->
13091318
[{rabbit_amqqueue:name(),
13101319
{ok, pos_integer()} | {error, pos_integer(), term()}}].
1311-
grow(Node, VhostSpec, QueueSpec, Membership, Strategy) ->
1320+
grow(Node, VhostSpec, QueueSpec, Strategy, Membership) ->
13121321
Running = rabbit_nodes:list_running(),
13131322
[begin
13141323
Size = length(get_nodes(Q)),

deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/add_member_command.ex

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,15 @@ defmodule RabbitMQ.CLI.Queues.Commands.AddMemberCommand do
7373
[name, node] = _args,
7474
%{vhost: vhost, node: node_name, timeout: timeout, membership: membership}
7575
) do
76-
case :rabbit_misc.rpc_call(node_name, :rabbit_quorum_queue, :add_member, [
77-
vhost,
78-
name,
79-
to_atom(node),
80-
to_atom(membership),
81-
timeout
82-
]) do
76+
args = [vhost, name, to_atom(node)]
77+
78+
args =
79+
case to_atom(membership) do
80+
:promotable -> args ++ [timeout]
81+
other -> args ++ [other, timeout]
82+
end
83+
84+
case :rabbit_misc.rpc_call(node_name, :rabbit_quorum_queue, :add_member, args) do
8385
{:error, :classic_queue_not_supported} ->
8486
{:error, "Cannot add members to a classic queue"}
8587

deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/grow_command.ex

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,15 @@ defmodule RabbitMQ.CLI.Queues.Commands.GrowCommand do
6767
membership: membership,
6868
errors_only: errors_only
6969
}) do
70-
case :rabbit_misc.rpc_call(node_name, :rabbit_quorum_queue, :grow, [
71-
to_atom(node),
72-
vhost_pat,
73-
queue_pat,
74-
to_atom(membership),
75-
to_atom(strategy)
76-
]) do
70+
args = [to_atom(node), vhost_pat, queue_pat, to_atom(strategy)]
71+
72+
args =
73+
case to_atom(membership) do
74+
:promotable -> args
75+
other -> args ++ [other]
76+
end
77+
78+
case :rabbit_misc.rpc_call(node_name, :rabbit_quorum_queue, :grow, args) do
7779
{:error, _} = error ->
7880
error
7981

deps/rabbitmq_management/src/rabbit_mgmt_wm_quorum_queue_replicas_add_member.erl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ accept_content(ReqData, Context) ->
4343
rabbit_amqqueue:with(
4444
rabbit_misc:r(VHost, queue, QName),
4545
fun(_Q) ->
46-
rabbit_quorum_queue:add_member(VHost, QName, rabbit_data_coercion:to_atom(NewReplicaNode), Membership, ?TIMEOUT)
46+
rabbit_quorum_queue:add_member(
47+
VHost,
48+
QName,
49+
rabbit_data_coercion:to_atom(NewReplicaNode),
50+
rabbit_data_coercion:to_atom(Membership),
51+
?TIMEOUT)
4752
end)
4853
end),
4954
case Res of

deps/rabbitmq_management/src/rabbit_mgmt_wm_quorum_queue_replicas_grow.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ accept_content(ReqData, Context) ->
4545
rabbit_data_coercion:to_atom(NewReplicaNode),
4646
VHPattern,
4747
QPattern,
48-
rabbit_data_coercion:to_atom(Membership),
49-
rabbit_data_coercion:to_atom(Strategy))
48+
rabbit_data_coercion:to_atom(Strategy),
49+
rabbit_data_coercion:to_atom(Membership))
5050
end),
5151
{true, ReqData, Context}.
5252

0 commit comments

Comments
 (0)