diff options
| -rw-r--r-- | apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl | 10 | ||||
| -rw-r--r-- | src/rabbit.erl | 11 | ||||
| -rw-r--r-- | src/rabbit_feature_flags.erl | 28 | ||||
| -rw-r--r-- | src/rabbit_lager.erl | 12 | ||||
| -rw-r--r-- | src/rabbit_nodes.erl | 6 | ||||
| -rw-r--r-- | test/unit_log_config_SUITE.erl | 19 |
6 files changed, 52 insertions, 34 deletions
diff --git a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl index aba76c197c..2acd1caf43 100644 --- a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl +++ b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl @@ -17,6 +17,11 @@ initial_pass_finished/0, shutdown_func/1]). +-ifdef(TEST). +-export([store_context/1, + clear_context_cache/0]). +-endif. + -define(PT_KEY_CONTEXT, {?MODULE, context}). -define(PT_KEY_BOOT_STATE, {?MODULE, boot_state}). -define(PT_KEY_INITIAL_PASS, {?MODULE, initial_pass_finished}). @@ -125,6 +130,11 @@ get_context() -> Context -> Context#{initial_pass => is_initial_pass()} end. +-ifdef(TEST). +clear_context_cache() -> + persistent_term:erase(?PT_KEY_CONTEXT). +-endif. + get_boot_state() -> persistent_term:get(?PT_KEY_BOOT_STATE, stopped). diff --git a/src/rabbit.erl b/src/rabbit.erl index 0bf6d47700..41a54ba36c 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -386,10 +386,9 @@ maybe_sd_notify() -> end. sd_notify_ready() -> - case {os:type(), os:getenv("NOTIFY_SOCKET")} of - {{win32, _}, _} -> - true; - {_, [_|_]} -> %% Non-empty NOTIFY_SOCKET, give it a try + case rabbit_prelaunch:get_context() of + #{systemd_notify_socket := Socket} when Socket =/= undefined -> + %% Non-empty NOTIFY_SOCKET, give it a try sd_notify_legacy() orelse sd_notify_socat(); _ -> true @@ -432,9 +431,11 @@ socat_socket_arg(UnixSocket) -> "unix-sendto:" ++ UnixSocket. sd_open_port() -> + #{systemd_notify_socket := Socket} = rabbit_prelaunch:get_context(), + true = Socket =/= undefined, open_port( {spawn_executable, os:find_executable("socat")}, - [{args, [socat_socket_arg(os:getenv("NOTIFY_SOCKET")), "STDIO"]}, + [{args, [socat_socket_arg(Socket), "STDIO"]}, use_stdio, out]). sd_notify_socat(Unit) -> diff --git a/src/rabbit_feature_flags.erl b/src/rabbit_feature_flags.erl index 054bc90a0b..9be78eec13 100644 --- a/src/rabbit_feature_flags.erl +++ b/src/rabbit_feature_flags.erl @@ -1246,22 +1246,17 @@ regen_registry_mod(AllFeatureFlags, {error, {compilation_failure, Errors, Warnings}} end. --ifdef(TEST). maybe_log_registry_source_code(Forms) -> - case os:getenv("LOG_FF_REGISTRY") of - false -> - ok; - _ -> + case rabbit_prelaunch:get_context() of + #{log_feature_flags_registry := true} -> rabbit_log_feature_flags:debug( "== FEATURE FLAGS REGISTRY ==~n" "~s~n" "== END ==~n", - [erl_prettypr:format(erl_syntax:form_list(Forms))]) + [erl_prettypr:format(erl_syntax:form_list(Forms))]); + _ -> + ok end. --else. -maybe_log_registry_source_code(_) -> - ok. --endif. -spec load_registry_mod(atom(), binary()) -> ok | {error, any()} | no_return(). @@ -2003,7 +1998,7 @@ sync_feature_flags_with_cluster([], NodeIsVirgin, _) -> "Feature flags: starting an unclustered " "node for the first time: all feature " "flags are forcibly left disabled from " - "the RABBITMQ_FEATURE_FLAGS environment " + "the $RABBITMQ_FEATURE_FLAGS environment " "variable"), ok; _ -> @@ -2011,7 +2006,7 @@ sync_feature_flags_with_cluster([], NodeIsVirgin, _) -> "Feature flags: starting an unclustered " "node for the first time: only the " "following feature flags specified in " - "the RABBITMQ_FEATURE_FLAGS environment " + "the $RABBITMQ_FEATURE_FLAGS environment " "variable will be enabled: ~p", [FeatureNames]), enable(FeatureNames) @@ -2126,9 +2121,12 @@ get_forced_feature_flag_names() -> %% @private get_forced_feature_flag_names_from_env() -> - case os:getenv("RABBITMQ_FEATURE_FLAGS") of - false -> undefined; - Value -> [list_to_atom(V) ||V <- string:lexemes(Value, ",")] + case rabbit_prelaunch:get_context() of + #{forced_feature_flags_on_init := ForcedFFs} + when is_list(ForcedFFs) -> + ForcedFFs; + _ -> + undefined end. -spec get_forced_feature_flag_names_from_config() -> [feature_name()] | undefined. diff --git a/src/rabbit_lager.erl b/src/rabbit_lager.erl index e9dce91909..a5c591b1ce 100644 --- a/src/rabbit_lager.erl +++ b/src/rabbit_lager.erl @@ -299,7 +299,7 @@ configure_lager() -> end, LogLevelsFromContext = case rabbit_prelaunch:get_context() of #{log_levels := LL} -> LL; - undefined -> undefined + _ -> undefined end, Fun = fun (global, _, CC) -> @@ -473,12 +473,14 @@ prepare_rabbit_log_config() -> tty -> set_env_default_log_console(); FileName when is_list(FileName) -> - case os:getenv("RABBITMQ_LOGS_source") of + case rabbit_prelaunch:get_context() of %% The user explicitly sets $RABBITMQ_LOGS; %% we should override a file location even %% if it's set in rabbitmq.config - "environment" -> set_env_default_log_file(FileName, override); - _ -> set_env_default_log_file(FileName, keep) + #{var_origins := #{main_log_file := environment}} -> + set_env_default_log_file(FileName, override); + _ -> + set_env_default_log_file(FileName, keep) end end, @@ -551,7 +553,7 @@ set_env_upgrade_log_file(FileName) -> generate_lager_sinks(SinkNames, SinkConfigs) -> LogLevels = case rabbit_prelaunch:get_context() of #{log_levels := LL} -> LL; - undefined -> undefined + _ -> undefined end, DefaultLogLevel = case LogLevels of #{global := LogLevel} -> diff --git a/src/rabbit_nodes.erl b/src/rabbit_nodes.erl index eb582c69f5..af0a546db5 100644 --- a/src/rabbit_nodes.erl +++ b/src/rabbit_nodes.erl @@ -41,10 +41,8 @@ boot() -> seed_user_provided_cluster_name(). name_type() -> - case os:getenv("RABBITMQ_USE_LONGNAME") of - "true" -> longnames; - _ -> shortnames - end. + #{nodename_type := NodeType} = rabbit_prelaunch:get_context(), + NodeType. -spec names(string()) -> rabbit_types:ok_or_error2([{string(), integer()}], term()). diff --git a/test/unit_log_config_SUITE.erl b/test/unit_log_config_SUITE.erl index ce2b7231be..ddaa18062c 100644 --- a/test/unit_log_config_SUITE.erl +++ b/test/unit_log_config_SUITE.erl @@ -56,7 +56,7 @@ init_per_testcase(_, Config) -> application:unset_env(lager, handlers), application:unset_env(lager, rabbit_handlers), application:unset_env(lager, extra_sinks), - os:unsetenv("RABBITMQ_LOGS_source"), + unset_logs_var_origin(), Config. end_per_testcase(_, Config) -> @@ -67,7 +67,7 @@ end_per_testcase(_, Config) -> application:unset_env(lager, handlers), application:unset_env(lager, rabbit_handlers), application:unset_env(lager, extra_sinks), - os:unsetenv("RABBITMQ_LOGS_source"), + unset_logs_var_origin(), application:unload(rabbit), application:unload(lager), Config. @@ -564,7 +564,7 @@ env_var_overrides_config(_) -> ConfigLogFile = "rabbit_not_default.log", application:set_env(rabbit, log, [{file, [{file, ConfigLogFile}]}]), - os:putenv("RABBITMQ_LOGS_source", "environment"), + set_logs_var_origin(environment), rabbit_lager:configure_lager(), ExpectedHandlers = default_expected_handlers(EnvLogFile), @@ -577,7 +577,7 @@ env_var_disable_log(_) -> ConfigLogFile = "rabbit_not_default.log", application:set_env(rabbit, log, [{file, [{file, ConfigLogFile}]}]), - os:putenv("RABBITMQ_LOGS_source", "environment"), + set_logs_var_origin(environment), rabbit_lager:configure_lager(), ExpectedHandlers = [], @@ -712,7 +712,7 @@ env_var_tty(_) -> application:set_env(rabbit, lager_default_file, tty), application:set_env(rabbit, lager_upgrade_file, tty), %% tty can only be set explicitly - os:putenv("RABBITMQ_LOGS_source", "environment"), + set_logs_var_origin(environment), rabbit_lager:configure_lager(), @@ -724,6 +724,15 @@ env_var_tty(_) -> ExpectedSinks = tty_expected_sinks(), ?assertEqual(ExpectedSinks, sort_sinks(application:get_env(lager, extra_sinks, undefined))). +set_logs_var_origin(Origin) -> + Context = #{var_origins => #{main_log_file => Origin}}, + rabbit_prelaunch:store_context(Context), + ok. + +unset_logs_var_origin() -> + rabbit_prelaunch:clear_context_cache(), + ok. + tty_expected_handlers() -> [{lager_console_backend, [{formatter_config, formatter_config()}, |
