Skip to content

Commit c8effeb

Browse files
committed
QQ: refactor add_member method to pass dialyzer
And be less confusing around the arguments that add_member/4 actually takes.
1 parent b4612c7 commit c8effeb

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

deps/rabbit/src/rabbit_queue_type_util.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ run_checks([C | Checks], Q) ->
7272
Err
7373
end.
7474

75-
-spec erpc_call(node(), module(), atom(), list(), non_neg_integer()) ->
75+
-spec erpc_call(node(), module(), atom(), list(), non_neg_integer() | infinity) ->
7676
term() | {error, term()}.
7777
erpc_call(Node, M, F, A, _Timeout)
7878
when Node =:= node() ->

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,7 +1304,10 @@ get_sys_status(Proc) ->
13041304

13051305
end.
13061306

1307-
add_member(VHost, Name, Node, Membership, Timeout) when is_binary(VHost) ->
1307+
add_member(VHost, Name, Node, Membership, Timeout)
1308+
when is_binary(VHost) andalso
1309+
is_binary(Name) andalso
1310+
is_atom(Node) ->
13081311
QName = #resource{virtual_host = VHost, name = Name, kind = queue},
13091312
rabbit_log:debug("Asked to add a replica for queue ~ts on node ~ts",
13101313
[rabbit_misc:rs(QName), Node]),
@@ -1324,7 +1327,7 @@ add_member(VHost, Name, Node, Membership, Timeout) when is_binary(VHost) ->
13241327
[rabbit_misc:rs(QName), Node]),
13251328
ok;
13261329
false ->
1327-
add_member(Q, Node, Membership, Timeout)
1330+
do_add_member(Q, Node, Membership, Timeout)
13281331
end
13291332
end;
13301333
{ok, _Q} ->
@@ -1333,16 +1336,21 @@ add_member(VHost, Name, Node, Membership, Timeout) when is_binary(VHost) ->
13331336
E
13341337
end.
13351338

1339+
add_member(VHost, Name, Node, Timeout) when is_binary(VHost) ->
1340+
%% NOTE needed to pass mixed cluster tests.
1341+
add_member(VHost, Name, Node, promotable, Timeout).
1342+
13361343
add_member(Q, Node) ->
1337-
add_member(Q, Node, promotable).
1344+
do_add_member(Q, Node, promotable, ?MEMBER_CHANGE_TIMEOUT).
13381345

13391346
add_member(Q, Node, Membership) ->
1340-
add_member(Q, Node, Membership, ?MEMBER_CHANGE_TIMEOUT).
1347+
do_add_member(Q, Node, Membership, ?MEMBER_CHANGE_TIMEOUT).
13411348

1342-
add_member(VHost, Name, Node, Timeout) when is_binary(VHost) ->
1343-
%% NOTE needed to pass mixed cluster tests.
1344-
add_member(VHost, Name, Node, promotable, Timeout);
1345-
add_member(Q, Node, Membership, Timeout) when ?amqqueue_is_quorum(Q) ->
1349+
1350+
do_add_member(Q, Node, Membership, Timeout)
1351+
when ?is_amqqueue(Q) andalso
1352+
?amqqueue_is_quorum(Q) andalso
1353+
is_atom(Node) ->
13461354
{RaName, _} = amqqueue:get_pid(Q),
13471355
QName = amqqueue:get_name(Q),
13481356
%% TODO parallel calls might crash this, or add a duplicate in quorum_nodes
@@ -1354,12 +1362,12 @@ add_member(Q, Node, Membership, Timeout) when ?amqqueue_is_quorum(Q) ->
13541362
case ra:start_server(?RA_SYSTEM, Conf) of
13551363
ok ->
13561364
ServerIdSpec =
1357-
case rabbit_feature_flags:is_enabled(quorum_queue_non_voters) of
1358-
true ->
1359-
maps:with([id, uid, membership], Conf);
1360-
false ->
1361-
maps:get(id, Conf)
1362-
end,
1365+
case rabbit_feature_flags:is_enabled(quorum_queue_non_voters) of
1366+
true ->
1367+
maps:with([id, uid, membership], Conf);
1368+
false ->
1369+
maps:get(id, Conf)
1370+
end,
13631371
case ra:add_member(Members, ServerIdSpec, Timeout) of
13641372
{ok, {RaIndex, RaTerm}, Leader} ->
13651373
Fun = fun(Q1) ->

0 commit comments

Comments
 (0)