Skip to content

Commit 2758a0a

Browse files
committed
Only consider exchange name when looking up number of delayed messages
The #exchange record contains fields like policy or options which can change for an exchange after delayed messages have been stored, resulting in no match and an apparent zero number of messages.
1 parent fb7ac94 commit 2758a0a

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

src/rabbit_delayed_message.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ disable_plugin() ->
9898
ok.
9999

100100
messages_delayed(Exchange) ->
101-
MatchHead = #delay_entry{delay_key = make_key('_', Exchange),
101+
ExchangeName = Exchange#exchange.name,
102+
MatchHead = #delay_entry{delay_key = make_key('_', #exchange{name = ExchangeName, _ = '_'}),
102103
delivery = '_', ref = '_'},
103104
Delays = mnesia:dirty_select(?TABLE_NAME, [{MatchHead, [], ['$_']}]),
104105
length(Delays).

test/plugin_SUITE.erl

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,26 @@ delayed_messages_count(Config) ->
220220
Exchanges = rabbit_ct_broker_helpers:rpc(Config, 0,
221221
rabbit_exchange, info_all, [<<"/">>]),
222222

223-
[Exchange] = lists:filter(
223+
FilterEx =
224224
fun(X) ->
225-
{resource, <<"/">>, exchange, Ex} == proplists:get_value(name, X)
225+
{resource, <<"/">>, exchange, Ex} == proplists:get_value(name, X)
226226
end,
227-
Exchanges),
227+
228+
[Exchange] = lists:filter(FilterEx, Exchanges),
228229
{messages_delayed, 6} = proplists:lookup(messages_delayed, Exchange),
229230

231+
%% Set a policy for the exchange
232+
P = make_policy_name(Config, "1"),
233+
rabbit_ct_broker_helpers:set_policy(
234+
Config, 0, P, <<"^", Ex/binary>>, <<"exchanges">>, [{<<"alternate-exchange">>,<<"altex">>}]),
235+
236+
%% Same message count returned for modified exchange
237+
Exchanges2 = rabbit_ct_broker_helpers:rpc(Config, 0,
238+
rabbit_exchange, info_all, [<<"/">>]),
239+
240+
[Exchange2] = lists:filter(FilterEx, Exchanges2),
241+
{messages_delayed, 6} = proplists:lookup(messages_delayed, Exchange2),
242+
230243
consume(Chan, Q, Msgs),
231244

232245
rabbit_ct_client_helpers:close_channel(Chan),
@@ -418,3 +431,7 @@ make_exchange_name(Config, Suffix) ->
418431
make_queue_name(Config, Suffix) ->
419432
B = rabbit_ct_helpers:get_config(Config, test_resource_name),
420433
erlang:list_to_binary("q-" ++ B ++ "-" ++ Suffix).
434+
435+
make_policy_name(Config, Suffix) ->
436+
B = rabbit_ct_helpers:get_config(Config, test_resource_name),
437+
erlang:list_to_binary("p-" ++ B ++ "-" ++ Suffix).

0 commit comments

Comments
 (0)