diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2020-04-08 14:55:35 +0200 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2020-04-09 10:21:18 +0200 |
| commit | 91d17eb28a81b682b3ce4a4a388d5269e04ddf75 (patch) | |
| tree | 126576938aeeb6fee4b0736f15c9ea037db8a9c7 /src | |
| parent | 6b8407318c23797a881399d0b5d1067b0cf2468e (diff) | |
| download | rabbitmq-server-git-91d17eb28a81b682b3ce4a4a388d5269e04ddf75.tar.gz | |
rabbit_feature_flags: Log more details during registry reloading
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_feature_flags.erl | 44 | ||||
| -rw-r--r-- | src/rabbit_ff_registry.erl | 13 |
2 files changed, 50 insertions, 7 deletions
diff --git a/src/rabbit_feature_flags.erl b/src/rabbit_feature_flags.erl index 63b920ea19..fd365fde55 100644 --- a/src/rabbit_feature_flags.erl +++ b/src/rabbit_feature_flags.erl @@ -885,7 +885,8 @@ initialize_registry(NewSupportedFeatureFlags, case Proceed of true -> rabbit_log_feature_flags:debug( - "Feature flags: (re)initialize registry"), + "Feature flags: (re)initialize registry (~p)", + [self()]), do_initialize_registry(AllFeatureFlags, FeatureStates, WrittenToDisk); @@ -910,12 +911,34 @@ does_registry_need_refresh(AllFeatureFlags, %% changes. CurrentAllFeatureFlags = rabbit_ff_registry:list(all), CurrentFeatureStates = rabbit_ff_registry:states(), - CurrentWrittenToDisk = rabbit_ff_registry:is_registry_written_to_disk(), + CurrentWrittenToDisk = + rabbit_ff_registry:is_registry_written_to_disk(), - AllFeatureFlags =/= CurrentAllFeatureFlags orelse - FeatureStates =/= CurrentFeatureStates orelse - WrittenToDisk =/= CurrentWrittenToDisk; + if + AllFeatureFlags =/= CurrentAllFeatureFlags -> + rabbit_log_feature_flags:debug( + "Feature flags: registry refresh needed: " + "yes, list of feature flags differs"), + true; + FeatureStates =/= CurrentFeatureStates -> + rabbit_log_feature_flags:debug( + "Feature flags: registry refresh needed: " + "yes, feature flag states differ"), + true; + WrittenToDisk =/= CurrentWrittenToDisk -> + rabbit_log_feature_flags:debug( + "Feature flags: registry refresh needed: " + "yes, \"written to disk\" state changed"), + true; + true -> + rabbit_log_feature_flags:debug( + "Feature flags: registry refresh needed: no"), + false + end; false -> + rabbit_log_feature_flags:debug( + "Feature flags: registry refresh needed: " + "yes, first-time initialization"), true end. @@ -1255,14 +1278,21 @@ registry_loading_lock() -> ?FF_REGISTRY_LOADING_LOCK. load_registry_mod(Mod, Bin) -> rabbit_log_feature_flags:debug( - "Feature flags: registry module ready, loading it..."), - FakeFilename = "Compiled and loaded by " ++ ?MODULE_STRING, + "Feature flags: registry module ready, loading it (~p)...", + [self()]), + FakeFilename = "Compiled and loaded by " ?MODULE_STRING, %% Time to load the new registry, replacing the old one. We use a %% lock here to synchronize concurrent reloads. global:set_lock(?FF_REGISTRY_LOADING_LOCK, [node()]), + rabbit_log_feature_flags:debug( + "Feature flags: acquired lock before reloading registry module (~p)", + [self()]), ok = purge_old_registry(Mod), true = code:delete(Mod), Ret = code:load_binary(Mod, FakeFilename, Bin), + rabbit_log_feature_flags:debug( + "Feature flags: releasing lock after reloading registry module (~p)", + [self()]), global:del_lock(?FF_REGISTRY_LOADING_LOCK, [node()]), case Ret of {module, _} -> diff --git a/src/rabbit_ff_registry.erl b/src/rabbit_ff_registry.erl index ea80804905..70a86db23b 100644 --- a/src/rabbit_ff_registry.erl +++ b/src/rabbit_ff_registry.erl @@ -37,6 +37,10 @@ is_registry_initialized/0, is_registry_written_to_disk/0]). +-ifdef(TEST). +-on_load(on_load/0). +-endif. + -spec get(rabbit_feature_flags:feature_name()) -> rabbit_feature_flags:feature_props() | undefined. %% @doc @@ -183,3 +187,12 @@ always_return_true() -> always_return_false() -> not always_return_true(). + +-ifdef(TEST). +on_load() -> + _ = (catch rabbit_log_feature_flags:debug( + "Feature flags: Loading initial (uninitialized) registry " + "module (~p)", + [self()])), + ok. +-endif. |
