summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-04-08 14:55:35 +0200
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-04-09 10:21:18 +0200
commit91d17eb28a81b682b3ce4a4a388d5269e04ddf75 (patch)
tree126576938aeeb6fee4b0736f15c9ea037db8a9c7 /src
parent6b8407318c23797a881399d0b5d1067b0cf2468e (diff)
downloadrabbitmq-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.erl44
-rw-r--r--src/rabbit_ff_registry.erl13
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.