Skip to content

Commit 0980eb8

Browse files
Merge pull request #3578 from rabbitmq/mergify/bp/v3.9.x/pr-3562
Disable the stream_plugin if stream feature flag is not enabled (backport #3562)
2 parents 9fccd84 + 51cf1fb commit 0980eb8

9 files changed

+66
-16
lines changed

deps/rabbitmq_stream/src/rabbit_stream.erl

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,23 @@
3939
-include("rabbit_stream_metrics.hrl").
4040

4141
start(_Type, _Args) ->
42-
rabbit_stream_metrics:init(),
43-
rabbit_global_counters:init([{protocol, stream}], ?PROTOCOL_COUNTERS),
44-
rabbit_global_counters:init([{protocol, stream},
45-
{queue_type, ?STREAM_QUEUE_TYPE}]),
46-
rabbit_stream_sup:start_link().
42+
FeatureFlagsEnabled = rabbit_ff_registry:list(enabled),
43+
case maps:is_key(stream_queue, FeatureFlagsEnabled) of
44+
true ->
45+
rabbit_stream_metrics:init(),
46+
rabbit_global_counters:init([{protocol, stream}], ?PROTOCOL_COUNTERS),
47+
rabbit_global_counters:init([{protocol, stream}, {queue_type, ?STREAM_QUEUE_TYPE}]),
48+
rabbit_stream_sup:start_link();
49+
false ->
50+
rabbit_log:warning(
51+
"Unable to start the stream plugin. The stream_queue feature flag is disabled. "++
52+
"Enable stream_queue feature flag then disable and re-enable the rabbitmq_stream plugin. ",
53+
"See https://www.rabbitmq.com/feature-flags.html to learn more",
54+
[]),
55+
{ok, self()}
56+
end.
57+
58+
4759

4860
tls_host() ->
4961
case application:get_env(rabbitmq_stream, advertised_tls_host,

deps/rabbitmq_stream_management/src/rabbit_stream_connection_consumers_mgmt.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222
-include_lib("rabbit_common/include/rabbit.hrl").
2323

2424
dispatcher() ->
25-
[{"/stream/connections/:vhost/:connection/consumers", ?MODULE, []}].
25+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
26+
true -> [{"/stream/connections/:vhost/:connection/consumers", ?MODULE, []}];
27+
false -> []
28+
end.
29+
2630

2731
web_ui() ->
2832
[].

deps/rabbitmq_stream_management/src/rabbit_stream_connection_mgmt.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
-include_lib("rabbit_common/include/rabbit.hrl").
2525

2626
dispatcher() ->
27-
[{"/stream/connections/:vhost/:connection", ?MODULE, []}].
27+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
28+
true -> [{"/stream/connections/:vhost/:connection", ?MODULE, []}];
29+
false -> []
30+
end.
31+
2832

2933
web_ui() ->
3034
[].

deps/rabbitmq_stream_management/src/rabbit_stream_connection_publishers_mgmt.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222
-include_lib("rabbit_common/include/rabbit.hrl").
2323

2424
dispatcher() ->
25-
[{"/stream/connections/:vhost/:connection/publishers", ?MODULE, []}].
25+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
26+
true -> [{"/stream/connections/:vhost/:connection/publishers", ?MODULE, []}];
27+
false -> []
28+
end.
29+
2630

2731
web_ui() ->
2832
[].

deps/rabbitmq_stream_management/src/rabbit_stream_connections_mgmt.erl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,22 @@
1919
-include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl").
2020

2121
dispatcher() ->
22-
[{"/stream/connections", ?MODULE, []}].
22+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
23+
true -> [{"/stream/connections", ?MODULE, []}];
24+
false -> []
25+
end.
26+
2327

2428
web_ui() ->
25-
[{javascript, <<"stream.js">>}].
29+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
30+
true -> [{javascript, <<"stream.js">>}];
31+
false -> rabbit_log:warning(
32+
"Unable to show the stream management plugin. The stream_queue feature flag is disabled. "++
33+
"Enable stream_queue feature flag then disable and re-enable the rabbitmq_stream_management plugin. ",
34+
"See https://www.rabbitmq.com/feature-flags.html to learn more",
35+
[]),
36+
[]
37+
end.
2638

2739
%%--------------------------------------------------------------------
2840

deps/rabbitmq_stream_management/src/rabbit_stream_connections_vhost_mgmt.erl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
-include_lib("amqp_client/include/amqp_client.hrl").
2222

2323
dispatcher() ->
24-
[{"/stream/connections/:vhost", ?MODULE, []}].
24+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
25+
true -> [{"/stream/connections/:vhost", ?MODULE, []}];
26+
false -> []
27+
end.
2528

2629
web_ui() ->
2730
[].

deps/rabbitmq_stream_management/src/rabbit_stream_consumers_mgmt.erl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
-include_lib("rabbit_common/include/rabbit.hrl").
2222

2323
dispatcher() ->
24-
[{"/stream/consumers", ?MODULE, []},
25-
{"/stream/consumers/:vhost", ?MODULE, []}].
24+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
25+
true -> [{"/stream/consumers", ?MODULE, []},
26+
{"/stream/consumers/:vhost", ?MODULE, []}];
27+
false -> []
28+
end.
2629

2730
web_ui() ->
2831
[].

deps/rabbitmq_stream_management/src/rabbit_stream_management_utils.erl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
-export([keep_stream_connections/1,
1111
keep_tracked_stream_connections/1,
12-
is_stream_connection/1]).
12+
is_stream_connection/1,
13+
is_feature_flag_enabled/0]).
1314

1415
-include_lib("rabbit_common/include/rabbit.hrl").
1516

@@ -31,3 +32,7 @@ keep_tracked_stream_connections(Connections) ->
3132
false
3233
end,
3334
Connections).
35+
36+
is_feature_flag_enabled() ->
37+
FeatureFlagsEnabled = rabbit_ff_registry:list(enabled),
38+
maps:is_key(stream_queue, FeatureFlagsEnabled).

deps/rabbitmq_stream_management/src/rabbit_stream_publishers_mgmt.erl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,12 @@
2121
-include_lib("rabbit_common/include/rabbit.hrl").
2222

2323
dispatcher() ->
24-
[{"/stream/publishers", ?MODULE, []},
24+
case rabbit_stream_management_utils:is_feature_flag_enabled() of
25+
true -> [{"/stream/publishers", ?MODULE, []},
2526
{"/stream/publishers/:vhost", ?MODULE, []},
26-
{"/stream/publishers/:vhost/:queue", ?MODULE, []}].
27+
{"/stream/publishers/:vhost/:queue", ?MODULE, []}];
28+
false -> []
29+
end.
2730

2831
web_ui() ->
2932
[].

0 commit comments

Comments
 (0)