Skip to content

Commit dc929d9

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 0d6b03b commit dc929d9

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
@@ -440,12 +440,13 @@ encode_queue(Q, NumMsgs, NumConsumers) ->
440440
{{utf8, <<"type">>}, {utf8, rabbit_queue_type:to_binary(QType)}},
441441
{{utf8, <<"arguments">>}, QArgs}
442442
],
443-
KVList1 = if is_list(Replicas) ->
444-
[{{utf8, <<"replicas">>},
445-
{array, utf8, [{utf8, atom_to_binary(R)} || R <- Replicas]}
446-
} | KVList0];
447-
Replicas =:= undefined ->
448-
KVList0
443+
KVList1 = case length(Replicas) > 0 of
444+
true ->
445+
[{{utf8, <<"replicas">>},
446+
{array, utf8, [{utf8, atom_to_binary(R)} || R <- Replicas]}
447+
} | KVList0];
448+
false ->
449+
KVList0
449450
end,
450451
KVList = case Leader of
451452
undefined ->
@@ -459,7 +460,7 @@ encode_queue(Q, NumMsgs, NumConsumers) ->
459460

460461
%% The returned Replicas contain both online and offline replicas.
461462
-spec queue_topology(amqqueue:amqqueue()) ->
462-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
463+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
463464
queue_topology(Q) ->
464465
Type = amqqueue:get_type(Q),
465466
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
@@ -275,7 +275,7 @@
275275
ok.
276276

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

280280
-spec discover(binary() | atom()) -> queue_type().
281281
discover(<<"undefined">>) ->

deps/rabbit/src/rabbit_quorum_queue.erl

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

22282228
-spec queue_topology(amqqueue:amqqueue()) ->
2229-
{Leader :: undefined | node(), Replicas :: undefined | [node(),...]}.
2229+
{Leader :: undefined | node(), Replicas :: [node(),...]}.
22302230
queue_topology(Q) ->
22312231
[{leader, Leader0},
2232-
{members, Members}] = rabbit_queue_type:info(Q, [leader, members]),
2233-
Leader = case Leader0 of
2234-
'' -> undefined;
2235-
_ -> Leader0
2236-
end,
2237-
{Leader, Members}.
2232+
{members, Members}] = rabbit_queue_type:info(Q, [leader, members]),
2233+
Leader = case Leader0 of
2234+
'' -> undefined;
2235+
_ -> Leader0
2236+
end,
2237+
{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)