Skip to content

Commit 26319e7

Browse files
committed
queue_topology should not return undefined for members
it's easier to deal with the result if members is an empty list than when it is either a list or `undefined`.
1 parent fbe3d2a commit 26319e7

File tree

6 files changed

+21
-20
lines changed

6 files changed

+21
-20
lines changed

deps/rabbit/src/rabbit_amqp_management.erl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -446,12 +446,13 @@ encode_queue(Q, NumMsgs, NumConsumers) ->
446446
end}},
447447
{{utf8, <<"arguments">>}, QArgs}
448448
],
449-
KVList1 = if is_list(Replicas) ->
450-
[{{utf8, <<"replicas">>},
451-
{array, utf8, [{utf8, atom_to_binary(R)} || R <- Replicas]}
452-
} | KVList0];
453-
Replicas =:= undefined ->
454-
KVList0
449+
KVList1 = case length(Replicas) > 0 of
450+
true ->
451+
[{{utf8, <<"replicas">>},
452+
{array, utf8, [{utf8, atom_to_binary(R)} || R <- Replicas]}
453+
} | KVList0];
454+
false ->
455+
KVList0
455456
end,
456457
KVList = case Leader of
457458
undefined ->
@@ -465,7 +466,7 @@ encode_queue(Q, NumMsgs, NumConsumers) ->
465466

466467
%% The returned Replicas contain both online and offline replicas.
467468
-spec queue_topology(amqqueue:amqqueue()) ->
468-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
469+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
469470
queue_topology(Q) ->
470471
Type = amqqueue:get_type(Q),
471472
Type:queue_topology(Q).

deps/rabbit/src/rabbit_classic_queue.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ send_queue_event(Pid, QName, Event) ->
678678
gen_server:cast(Pid, {queue_event, QName, Event}).
679679

680680
-spec queue_topology(amqqueue:amqqueue()) ->
681-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
681+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
682682
queue_topology(Q) ->
683683
Pid = amqqueue:get_pid(Q),
684684
Node = node(Pid),

deps/rabbit/src/rabbit_queue_type.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@
273273
ok.
274274

275275
-callback queue_topology(amqqueue:amqqueue()) ->
276-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
276+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
277277

278278
-spec discover(binary() | atom()) -> queue_type().
279279
discover(<<"undefined">>) ->

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2227,12 +2227,12 @@ maybe_log_leader_health_check_result(Result) ->
22272227
rabbit_log:warning("Leader health check result (unhealthy leaders detected): ~tp", [Qs]).
22282228

22292229
-spec queue_topology(amqqueue:amqqueue()) ->
2230-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
2230+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
22312231
queue_topology(Q) ->
22322232
[{leader, Leader0},
2233-
{members, Members}] = rabbit_queue_type:info(Q, [leader, members]),
2234-
Leader = case Leader0 of
2235-
'' -> undefined;
2236-
_ -> Leader0
2237-
end,
2238-
{Leader, Members}.
2233+
{members, Members}] = rabbit_queue_type:info(Q, [leader, members]),
2234+
Leader = case Leader0 of
2235+
'' -> undefined;
2236+
_ -> Leader0
2237+
end,
2238+
{Leader, Members}.

deps/rabbit/src/rabbit_stream_queue.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,7 +1397,7 @@ delivery_count_add(Count, N) ->
13971397
serial_number:add(Count, N).
13981398

13991399
-spec queue_topology(amqqueue:amqqueue()) ->
1400-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
1400+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
14011401
queue_topology(Q) ->
14021402
#{name := StreamId} = amqqueue:get_type_state(Q),
14031403
case rabbit_stream_coordinator:members(StreamId) of
@@ -1407,6 +1407,6 @@ queue_topology(Q) ->
14071407
(Node, {_Pid, replica}, {Writer, Replicas}) ->
14081408
{Writer, [Node | Replicas]}
14091409
end, {undefined, []}, Members);
1410-
{error, _} ->
1411-
{undefined, undefined}
1410+
{error, _} ->
1411+
{undefined, []}
14121412
end.

deps/rabbitmq_mqtt/src/rabbit_mqtt_qos0_queue.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ state_info(A1) ->
305305
?UNSUPPORTED([A1]).
306306

307307
-spec queue_topology(amqqueue:amqqueue()) ->
308-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
308+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
309309
queue_topology(Q) ->
310310
Pid = amqqueue:get_pid(Q),
311311
Node = node(Pid),

0 commit comments

Comments
 (0)