Skip to content

Commit 2024a4b

Browse files
Merge pull request #14348 from udeeksha30-netizen/local_random_exchange
Add config option for enabling local_random_exchange
2 parents 2f49f9d + 781c140 commit 2024a4b

File tree

3 files changed

+41
-5
lines changed

3 files changed

+41
-5
lines changed

deps/rabbit/priv/schema/rabbit.schema

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2606,7 +2606,10 @@ fun(Conf) ->
26062606
end
26072607
end}.
26082608

2609-
2609+
%% Enable or disable local random exchange
2610+
{mapping, "exchange_types.local_random.enabled", "rabbit.local_random_exchange_enabled", [
2611+
{datatype, {enum, [true, false]}}
2612+
]}.
26102613

26112614
%%
26122615
%% Backing queue version

deps/rabbit/src/rabbit_exchange_type_local_random.erl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,19 @@ serialise_events() -> false.
6060
validate(_X) ->
6161
case rabbit_feature_flags:is_enabled(?MODULE) of
6262
true ->
63-
ok;
63+
case application:get_env(rabbit, local_random_exchange_enabled, true) of
64+
true ->
65+
ok;
66+
false ->
67+
rabbit_misc:protocol_error(
68+
precondition_failed,
69+
"x-local-random exchange is disabled by configuration", [],
70+
'exchange.declare')
71+
end;
6472
false ->
65-
rabbit_misc:amqp_error(
73+
rabbit_misc:protocol_error(
6674
precondition_failed,
67-
"x-local-random exchange feature not available", [],
75+
"x-local-random exchange feature flag is disabled", [],
6876
'exchange.declare')
6977
end.
7078

deps/rabbit/test/rabbit_local_random_exchange_SUITE.erl

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ groups() ->
2121
[
2222
{non_parallel_tests, [], [
2323
routed_to_one_local_queue_test,
24-
no_route
24+
no_route,
25+
disable_local_random_exchange_config_test
2526
]}
2627
].
2728

@@ -196,6 +197,30 @@ make_queue_name(Config, Node) ->
196197
B = rabbit_ct_helpers:get_config(Config, test_resource_name),
197198
erlang:list_to_binary("q-" ++ B ++ "-" ++ integer_to_list(Node)).
198199

200+
disable_local_random_exchange_config_test(Config) ->
201+
E = make_exchange_name(Config, "config-test"),
202+
203+
%% Disable the config flag
204+
rabbit_ct_broker_helpers:rpc(Config, 0, application, set_env,
205+
[rabbit, local_random_exchange_enabled, false]),
206+
207+
%% Try to create exchange - should fail
208+
?assertExit({{shutdown, {server_initiated_close, 406, _}}, _},
209+
declare_exchange(Config, E)),
210+
211+
%% Re-enable the config flag
212+
rabbit_ct_broker_helpers:rpc(Config, 0, application, set_env,
213+
[rabbit, local_random_exchange_enabled, true]),
214+
215+
%% Now exchange creation should succeed
216+
declare_exchange(Config, E),
217+
218+
%% Clean up
219+
run_on_node(Config, 0,
220+
fun(Chan) ->
221+
amqp_channel:call(Chan, #'exchange.delete'{exchange = E})
222+
end).
223+
199224
flush(T) ->
200225
receive X ->
201226
ct:pal("flushed ~p", [X]),

0 commit comments

Comments
 (0)