Skip to content

Commit febcdbb

Browse files
Deekshaudeeksha30-netizen
authored andcommitted
Add config option for enabling local_random_exchange
1 parent d5b5af5 commit febcdbb

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

deps/rabbit/priv/schema/rabbit.schema

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,7 +2592,13 @@ fun(Conf) ->
25922592
end
25932593
end}.
25942594

2595+
%% Enable or disable local random exchange
2596+
%%
2597+
%% {enable_local_random_exchange, false},
25952598

2599+
{mapping, "enable_local_random_exchange", "rabbit.enable_local_random_exchange", [
2600+
{datatype, {enum, [true, false]}}
2601+
]}.
25962602

25972603
%%
25982604
%% Backing queue version

deps/rabbit/src/rabbit_exchange_type_local_random.erl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,12 @@ info(_X) -> [].
5858
info(_X, _) -> [].
5959
serialise_events() -> false.
6060
validate(_X) ->
61-
case rabbit_feature_flags:is_enabled(?MODULE) of
61+
case rabbit_feature_flags:is_enabled(?MODULE) andalso
62+
rabbit_misc:get_env(rabbit, enable_local_random_exchange, true) of
6263
true ->
6364
ok;
6465
false ->
65-
rabbit_misc:amqp_error(
66+
rabbit_misc:protocol_error(
6667
precondition_failed,
6768
"x-local-random exchange feature not available", [],
6869
'exchange.declare')

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+
enable_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+
enable_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, enable_local_random_exchange, 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, enable_local_random_exchange, 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)