Skip to content

Commit 8a60207

Browse files
Merge branch 'v3.7.x' into rabbitmq-server-vhost-sup-sup-badarg
2 parents 3dee917 + cef9d18 commit 8a60207

File tree

3 files changed

+54
-7
lines changed

3 files changed

+54
-7
lines changed

src/rabbit_channel.erl

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,13 +361,29 @@ emit_info(PidList, InfoItems, Ref, AggregatorPid) ->
361361

362362
refresh_config_local() ->
363363
rabbit_misc:upmap(
364-
fun (C) -> gen_server2:call(C, refresh_config, infinity) end,
364+
fun (C) ->
365+
try
366+
gen_server2:call(C, refresh_config, infinity)
367+
catch _:Reason ->
368+
rabbit_log:error("Failed to refresh channel config "
369+
"for channel ~p. Reason ~p",
370+
[C, Reason])
371+
end
372+
end,
365373
list_local()),
366374
ok.
367375

368376
refresh_interceptors() ->
369377
rabbit_misc:upmap(
370-
fun (C) -> gen_server2:call(C, refresh_interceptors, ?REFRESH_TIMEOUT) end,
378+
fun (C) ->
379+
try
380+
gen_server2:call(C, refresh_interceptors, ?REFRESH_TIMEOUT)
381+
catch _:Reason ->
382+
rabbit_log:error("Failed to refresh channel interceptors "
383+
"for channel ~p. Reason ~p",
384+
[C, Reason])
385+
end
386+
end,
371387
list_local()),
372388
ok.
373389

test/channel_interceptor_SUITE.erl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ all() ->
2929
groups() ->
3030
[
3131
{non_parallel_tests, [], [
32-
register_interceptor
32+
register_interceptor,
33+
register_failing_interceptors
3334
]}
3435
].
3536

@@ -71,9 +72,9 @@ end_per_testcase(Testcase, Config) ->
7172

7273
register_interceptor(Config) ->
7374
passed = rabbit_ct_broker_helpers:rpc(Config, 0,
74-
?MODULE, register_interceptor1, [Config]).
75+
?MODULE, register_interceptor1, [Config, dummy_interceptor]).
7576

76-
register_interceptor1(Config) ->
77+
register_interceptor1(Config, Interceptor) ->
7778
PredefinedChannels = rabbit_channel:list(),
7879

7980
Ch1 = rabbit_ct_client_helpers:open_channel(Config, 0),
@@ -89,8 +90,8 @@ register_interceptor1(Config) ->
8990

9091
ok = rabbit_registry:register(channel_interceptor,
9192
<<"dummy interceptor">>,
92-
dummy_interceptor),
93-
[{interceptors, [{dummy_interceptor, undefined}]}] =
93+
Interceptor),
94+
[{interceptors, [{Interceptor, undefined}]}] =
9495
rabbit_channel:info(ChannelProc, [interceptors]),
9596

9697
check_send_receive(Ch1, QName, <<"bar">>, <<"">>),
@@ -102,6 +103,9 @@ register_interceptor1(Config) ->
102103
check_send_receive(Ch1, QName, <<"bar">>, <<"bar">>),
103104
passed.
104105

106+
register_failing_interceptors(Config) ->
107+
passed = rabbit_ct_broker_helpers:rpc(Config, 0,
108+
?MODULE, register_interceptor1, [Config, failing_dummy_interceptor]).
105109

106110
check_send_receive(Ch1, QName, Send, Receive) ->
107111
amqp_channel:call(Ch1,

test/failing_dummy_interceptor.erl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-module(failing_dummy_interceptor).
2+
3+
-behaviour(rabbit_channel_interceptor).
4+
5+
-include_lib("rabbit_common/include/rabbit.hrl").
6+
-include_lib("rabbit_common/include/rabbit_framing.hrl").
7+
8+
9+
-compile(export_all).
10+
11+
init(_Ch) ->
12+
timer:sleep(15500),
13+
undefined.
14+
15+
description() ->
16+
[{description,
17+
<<"Empties payload on publish">>}].
18+
19+
intercept(#'basic.publish'{} = Method, Content, _IState) ->
20+
Content2 = Content#content{payload_fragments_rev = []},
21+
{Method, Content2};
22+
23+
intercept(Method, Content, _VHost) ->
24+
{Method, Content}.
25+
26+
applies_to() ->
27+
['basic.publish'].

0 commit comments

Comments
 (0)