diff options
author | Jean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr> | 2021-07-01 15:42:30 +0200 |
---|---|---|
committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2021-07-22 11:21:07 +0200 |
commit | 0bb37507d0e1fea1426ce30bbad76f15452f8320 (patch) | |
tree | a75f2d2f118d430e6d5299f8fd3392389c89c823 | |
parent | 9258ff1197c0c06554dc39c819a4a9152d91bada (diff) | |
download | rabbitmq-server-git-0bb37507d0e1fea1426ce30bbad76f15452f8320.tar.gz |
Add relx configuration for an hypothetic 3.10.0 Erlang release
In rabbitmq-defaults, compute $SYS_PREFIX when started from an Erlang
release. The behavior is the same as in a generic-unix package: data &
log dirs will be derived from the release root directory.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rwxr-xr-x | deps/rabbit/scripts/rabbitmq-defaults | 7 | ||||
-rw-r--r-- | deps/rabbit/src/rabbit_feature_flags.erl | 26 | ||||
-rw-r--r-- | deps/rabbit/src/rabbit_plugins.erl | 6 | ||||
-rw-r--r-- | deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl | 2 | ||||
-rw-r--r-- | relx.config | 37 | ||||
-rw-r--r-- | vm.args.src | 45 |
8 files changed, 110 insertions, 17 deletions
diff --git a/.gitignore b/.gitignore index f71d98b114..05e7a03339 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,7 @@ erl_crash.dump .envrc *.plt *.lock +_rel /topic-branch-scratch/ @@ -29,6 +29,9 @@ DEP_PLUGINS = rabbit_common/mk/rabbitmq-dist.mk \ DISABLE_DISTCLEAN = 1 +# Newer version of relx(1) with fixes in the extended start script. +RELX_URL := https://storage.googleapis.com/rmq/erlang-releases/relx-v3.29.0 + # FIXME: Use erlang.mk patched for RabbitMQ, while waiting for PRs to be # reviewed and merged. diff --git a/deps/rabbit/scripts/rabbitmq-defaults b/deps/rabbit/scripts/rabbitmq-defaults index 41d72c7da4..7ba61db428 100755 --- a/deps/rabbit/scripts/rabbitmq-defaults +++ b/deps/rabbit/scripts/rabbitmq-defaults @@ -7,7 +7,12 @@ ## ### next line potentially updated in package install steps -SYS_PREFIX= +if test -f "$RABBITMQ_HOME/bin/RabbitMQ"; then + SYS_PREFIX=$RABBITMQ_HOME/$RABBITMQ_NODENAME +else + SYS_PREFIX= +fi +export SYS_PREFIX CLEAN_BOOT_FILE=start_clean SASL_BOOT_FILE=start_sasl diff --git a/deps/rabbit/src/rabbit_feature_flags.erl b/deps/rabbit/src/rabbit_feature_flags.erl index 66e9dd49eb..d8e03cb581 100644 --- a/deps/rabbit/src/rabbit_feature_flags.erl +++ b/deps/rabbit/src/rabbit_feature_flags.erl @@ -1480,9 +1480,9 @@ try_to_write_enabled_feature_flags_list(FeatureNames) -> %% @returns the path to the file. enabled_feature_flags_list_file() -> - case application:get_env(rabbit, feature_flags_file) of - {ok, Val} -> Val; - undefined -> throw(feature_flags_file_not_set) + case rabbit_prelaunch:get_context() of + #{feature_flags_file := File} -> File; + _ -> throw(feature_flags_file_not_set) end. %% ------------------------------------------------------------------- @@ -2232,9 +2232,10 @@ get_forced_feature_flag_names_from_env() -> %% @private get_forced_feature_flag_names_from_config() -> - Value = application:get_env(rabbit, - forced_feature_flags_on_init, - undefined), + Value = maps:get( + forced_feature_flags_on_init, + rabbit_prelaunch:get_context(), + undefined), case Value of undefined -> Value; @@ -2441,12 +2442,13 @@ on_load() -> %% application environment variable is defined. With a %% feature-flags-enabled node, this application environment %% variable is defined by rabbitmq-server(8). - case application:get_env(rabbit, feature_flags_file) of - {ok, _} -> - %% This is a feature-flags-enabled version. Loading - %% the module is permitted. - ok; - _ -> + try + _ = enabled_feature_flags_list_file(), + %% This is a feature-flags-enabled version. Loading + %% the module is permitted. + ok + catch + _:_:_ -> %% This is a pre-feature-flags version. We deny the %% load and report why, possibly specifying the %% version of RabbitMQ. diff --git a/deps/rabbit/src/rabbit_plugins.erl b/deps/rabbit/src/rabbit_plugins.erl index a631f07884..37868df584 100644 --- a/deps/rabbit/src/rabbit_plugins.erl +++ b/deps/rabbit/src/rabbit_plugins.erl @@ -90,9 +90,9 @@ plugins_dir() -> -spec enabled_plugins_file() -> file:filename(). enabled_plugins_file() -> - case application:get_env(rabbit, enabled_plugins_file) of - {ok, Val} -> - Val; + case rabbit_prelaunch:get_context() of + #{enabled_plugins_file := File} -> + File; _ -> filename:join([rabbit_mnesia:dir(), "enabled_plugins"]) end. diff --git a/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl b/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl index 6f3846de61..3fb5f7a54d 100644 --- a/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl +++ b/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl @@ -289,7 +289,7 @@ i(net_ticktime, State) -> i(persister_stats, State) -> {State, persister_stats(State)}; i(enabled_plugins, State) -> - {ok, Dir} = application:get_env(rabbit, enabled_plugins_file), + Dir = rabbit_plugins:enabled_plugins_file(), {State, rabbit_plugins:read_enabled(Dir)}; i(auth_mechanisms, State) -> {ok, Mechanisms} = application:get_env(rabbit, auth_mechanisms), diff --git a/relx.config b/relx.config new file mode 100644 index 0000000000..bc28f6294d --- /dev/null +++ b/relx.config @@ -0,0 +1,37 @@ +%% vim:ft=erlang: +{release, + {"RabbitMQ", "3.10.0"}, + [{mnesia, none}, + + rabbit, + + {amqp_client, none}, + {rabbitmq_management_agent, none}, + {rabbitmq_web_dispatch, none}, + {rabbitmq_management, none}, + + {prometheus, none}, + {rabbitmq_prometheus, none}, + + {rabbitmq_stream_common, none}, + {rabbitmq_stream, none}, + {rabbitmq_stream_management, none}, + {rabbitmq_top, none}]}. + +{extended_start_script, true}. + +{vm_args, "./vm.args.src"}. + +{overlay, [{copy, "escript", "escript"}, + {copy, "sbin/rabbitmq-defaults", "bin"}, + {copy, "sbin/rabbitmq-env", "bin"}, + {copy, "sbin/rabbitmq-plugins", "bin"}, + {copy, "sbin/rabbitmq-diagnostics", "bin"}, + {copy, "sbin/rabbitmq-queues", "bin"}, + {copy, "sbin/rabbitmq-streams", "bin"}, + {copy, "sbin/rabbitmq-upgrade", "bin"}, + {copy, "sbin/rabbitmqctl", "bin"}, + {mkdir, "etc"}, + {mkdir, "etc/rabbitmq"}]}. + +{extended_start_script_hooks, [{pre_start, [{custom, "rabbitmq-env"}]}]}. diff --git a/vm.args.src b/vm.args.src new file mode 100644 index 0000000000..37f9b486a3 --- /dev/null +++ b/vm.args.src @@ -0,0 +1,45 @@ +## Name of the node +-sname rabbit + +## Cookie for distributed erlang +#-setcookie rabbit + +## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive +## (Disabled by default..use with caution!) +##-heart + +## Enable kernel poll and a few async threads +##+K true +##+A 5 + +## Increase number of concurrent ports/sockets +##-env ERL_MAX_PORTS 4096 + +## Tweak GC to run more often +##-env ERL_FULLSWEEP_AFTER 10 + +# +B [c | d | i] +# Option c makes Ctrl-C interrupt the current shell instead of invoking the emulator break +# handler. Option d (same as specifying +B without an extra option) disables the break handler. # Option i makes the emulator ignore any break signal. +# If option c is used with oldshell on Unix, Ctrl-C will restart the shell process rather than +# interrupt it. +# Disable the emulator break handler +# it easy to accidentally type ctrl-c when trying +# to reach for ctrl-d. ctrl-c on a live node can +# have very undesirable results ++Bi + ++W w + +-syslog logger [] +-syslog syslog_error_logger false + +-env ERL_MAX_ETS_TABLES 50000 + ++P 1048576 ++t 5000000 ++stbt db ++zdbbl 128000 ++sbwt none ++sbwtdcpu none ++sbwtdio none |