Skip to content

Commit adbb2c6

Browse files
authored
Merge pull request #10502 from rabbitmq/soft-remove-stream-max-segment-size-bytes
Streams: Soft remove policy configuration of max_segment_size_bytes
2 parents 6d4fdc4 + 5317f95 commit adbb2c6

File tree

5 files changed

+30
-10
lines changed

5 files changed

+30
-10
lines changed

deps/rabbit/src/rabbit_core_ff.erl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,11 @@
148148
post_enable =>
149149
{rabbit_khepri, khepri_db_migration_post_enable}}
150150
}}).
151+
152+
-rabbit_feature_flag(
153+
{stream_update_config_command,
154+
#{desc => "A new internal command that is used to update streams as "
155+
"part of a policy.",
156+
stability => stable,
157+
depends_on => [stream_queue]
158+
}}).

deps/rabbit/src/rabbit_stream_coordinator.erl

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,17 @@ delete_replica(StreamId, Node) ->
236236

237237
policy_changed(Q) when ?is_amqqueue(Q) ->
238238
StreamId = maps:get(name, amqqueue:get_type_state(Q)),
239-
process_command({policy_changed, StreamId, #{queue => Q}}).
239+
case rabbit_feature_flags:is_enabled(stream_update_config_command) of
240+
true ->
241+
%% there are the only two configuration keys that are safe to
242+
%% update
243+
Conf = maps:with([filter_size,
244+
retention],
245+
rabbit_stream_queue:update_stream_conf(Q, #{})),
246+
process_command({update_config, StreamId, Conf});
247+
false ->
248+
process_command({policy_changed, StreamId, #{queue => Q}})
249+
end.
240250

241251
sac_state(#?MODULE{single_active_consumer = SacState}) ->
242252
SacState.
@@ -1601,12 +1611,13 @@ update_stream0(#{system_time := _Ts} = _Meta,
16011611
M
16021612
end, Members0),
16031613
Stream0#stream{members = Members};
1604-
update_stream0(#{system_time := _Ts},
1605-
{policy_changed, _StreamId, #{queue := Q}},
1606-
#stream{conf = Conf0,
1607-
members = _Members0} = Stream0) ->
1614+
update_stream0(_Meta, {policy_changed, _StreamId, #{queue := Q}},
1615+
#stream{conf = Conf0} = Stream0) ->
16081616
Conf = rabbit_stream_queue:update_stream_conf(Q, Conf0),
16091617
Stream0#stream{conf = Conf};
1618+
update_stream0(_Meta, {update_config, _StreamId, Conf},
1619+
#stream{conf = Conf0} = Stream0) ->
1620+
Stream0#stream{conf = maps:merge(Conf0, Conf)};
16101621
update_stream0(_Meta, _Cmd, undefined) ->
16111622
undefined.
16121623

deps/rabbit/test/rabbit_stream_queue_SUITE.erl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@ init_per_group1(Group, Config) ->
249249
Config2, stream_queue),
250250
case EnableFF of
251251
ok ->
252+
if Clustered ->
253+
rabbit_ct_broker_helpers:enable_feature_flag(
254+
Config2, stream_update_config_command);
255+
true ->
256+
ok
257+
end,
252258
ok = rabbit_ct_broker_helpers:rpc(
253259
Config2, 0, application, set_env,
254260
[rabbit, channel_tick_interval, 100]),

deps/rabbitmq_management/priv/www/js/global.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,6 @@ var HELP = {
207207
'queue-max-age':
208208
'How long a message published to a stream queue can live before it is discarded.',
209209

210-
'queue-stream-max-segment-size-bytes':
211-
'Total segment size for stream segments on disk.<br/>(Sets the x-stream-max-segment-size-bytes argument.)',
212-
213210
'queue-stream-filter-size-bytes':
214211
'Size of the filter data attached to each stream chunk.<br/>(Sets the x-stream-filter-size-bytes argument.)',
215212

deps/rabbitmq_management/priv/www/js/tmpl/policies.ejs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,6 @@
139139
<td>
140140
<span class="argument-link" field="definition" key="max-age" type="string">Max age</span>
141141
<span class="help" id="queue-max-age"></span> |
142-
<span class="argument-link" field="definition" key="stream-max-segment-size-bytes" type="number">Max segment size in bytes</span>
143-
<span class="help" id="queue-stream-max-segment-size-bytes"></span> |
144142
<span class="argument-link" field="definition" key="stream-filter-size-bytes" type="number">Filter size in bytes. Valid range: 16-255</span>
145143
<span class="help" id="queue-stream-filter-size-bytes"></span> |
146144
<span class="argument-link" field="definition" key="queue-leader-locator" type="string">Leader locator</span>

0 commit comments

Comments
 (0)