Skip to content

Commit eb96ac9

Browse files
Emit consumer creation events for all consumers
when force refreshing events. We do that when consumers are registered online. Inactive consumers in case of SAC queues are still present and their presence should be broadcast as an internal event. This also simplifies the code updated for #3072. Per discussion with @pjk25.
1 parent 8f234dd commit eb96ac9

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

deps/rabbit/src/rabbit_amqqueue_process.erl

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,30 +1620,16 @@ handle_cast({credit, ChPid, CTag, Credit, Drain},
16201620
% This event is necessary for the stats timer to be initialized with
16211621
% the correct values once the management agent has started
16221622
handle_cast({force_event_refresh, Ref},
1623-
State = #q{consumers = Consumers,
1624-
active_consumer = Holder}) ->
1623+
State = #q{consumers = Consumers}) ->
16251624
rabbit_event:notify(queue_created, infos(?CREATION_EVENT_KEYS, State), Ref),
16261625
QName = qname(State),
16271626
AllConsumers = rabbit_queue_consumers:all(Consumers),
1628-
case Holder of
1629-
none ->
1630-
[emit_consumer_created(
1631-
Ch, CTag, false, AckRequired, QName, Prefetch,
1632-
Args, Ref, ActingUser) ||
1633-
{Ch, CTag, AckRequired, Prefetch, _, _, Args, ActingUser}
1634-
<- AllConsumers];
1635-
{_Ch, CTag} ->
1636-
case AllConsumers of
1637-
[] -> ok;
1638-
Cs ->
1639-
case lists:keyfind(CTag, 1, Cs) of
1640-
false -> ok;
1641-
{Ch, CTag, AckRequired, Prefetch, _, _, Args, ActingUser} ->
1642-
emit_consumer_created(
1643-
Ch, CTag, true, AckRequired, QName, Prefetch, Args, Ref, ActingUser)
1644-
end
1645-
end
1646-
end,
1627+
rabbit_log:debug("Queue ~s forced to re-emit events, consumers: ~p", [rabbit_misc:rs(QName), AllConsumers]),
1628+
[emit_consumer_created(
1629+
Ch, CTag, ActiveOrExclusive, AckRequired, QName, Prefetch,
1630+
Args, Ref, ActingUser) ||
1631+
{Ch, CTag, AckRequired, Prefetch, ActiveOrExclusive, _, Args, ActingUser}
1632+
<- AllConsumers],
16471633
noreply(rabbit_event:init_stats_timer(State, #q.stats_timer));
16481634

16491635
handle_cast(notify_decorators, State) ->

0 commit comments

Comments
 (0)