Skip to content

Commit fa25e4c

Browse files
authored
Merge pull request #8749 from rabbitmq/reset-feature-flags-registry-on-boot
rabbit_feature_flags: Reset the registry before the boot-time init
2 parents 98c85f3 + 104663d commit fa25e4c

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

deps/rabbit/src/rabbit_deprecated_features.erl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,11 @@ is_permitted_in_configuration(FeatureName, Default) ->
497497
Settings = application:get_env(rabbit, permit_deprecated_features, #{}),
498498
case maps:get(FeatureName, Settings, undefined) of
499499
undefined ->
500+
?LOG_DEBUG(
501+
"Deprecated features: `~ts`: `permit_deprecated_features` "
502+
"map unset in configuration, using default",
503+
[FeatureName],
504+
#{domain => ?RMQLOG_DOMAIN_FEAT_FLAGS}),
500505
Default;
501506
Default ->
502507
PermittedStr = case Default of

deps/rabbit/src/rabbit_ff_registry_factory.erl

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
initialize_registry/1,
1919
initialize_registry/3,
2020
acquire_state_change_lock/0,
21-
release_state_change_lock/0]).
21+
release_state_change_lock/0,
22+
reset_registry/0]).
2223

2324
-ifdef(TEST).
2425
-export([registry_loading_lock/0,
@@ -784,3 +785,15 @@ do_purge_old_registry(Mod) ->
784785
true -> ok;
785786
false -> do_purge_old_registry(Mod)
786787
end.
788+
789+
-spec reset_registry() -> ok.
790+
791+
reset_registry() ->
792+
?LOG_DEBUG(
793+
"Feature flags: resetting loaded registry",
794+
[],
795+
#{domain => ?RMQLOG_DOMAIN_FEAT_FLAGS}),
796+
_ = code:purge(rabbit_ff_registry),
797+
_ = code:delete(rabbit_ff_registry),
798+
?assertNot(rabbit_ff_registry:is_registry_initialized()),
799+
ok.

deps/rabbit/src/rabbit_prelaunch_feature_flags.erl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ setup(#{feature_flags_file := FFFile}) ->
1919
#{domain => ?RMQLOG_DOMAIN_PRELAUNCH}),
2020
case filelib:ensure_dir(FFFile) of
2121
ok ->
22+
%% On boot, we know that there should be no registry loaded at
23+
%% first. There could be a loaded registry around during a
24+
%% stop_app/start_app, so reset it here. This ensures that e.g.
25+
%% any change to the configuration file w.r.t. deprecated features
26+
%% are taken into account.
27+
rabbit_ff_registry_factory:reset_registry(),
28+
2229
?LOG_DEBUG(
2330
"Initializing feature flags registry", [],
2431
#{domain => ?RMQLOG_DOMAIN_PRELAUNCH}),

0 commit comments

Comments
 (0)