diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/cuttlefish | bin | 508786 -> 0 bytes | |||
| -rwxr-xr-x | scripts/rabbitmq-defaults | 37 | ||||
| -rw-r--r-- | scripts/rabbitmq-defaults.bat | 37 | ||||
| -rw-r--r-- | scripts/rabbitmq-diagnostics.bat | 6 | ||||
| -rwxr-xr-x | scripts/rabbitmq-env | 287 | ||||
| -rw-r--r-- | scripts/rabbitmq-env.bat | 374 | ||||
| -rw-r--r-- | scripts/rabbitmq-plugins.bat | 6 | ||||
| -rw-r--r-- | scripts/rabbitmq-queues.bat | 7 | ||||
| -rwxr-xr-x | scripts/rabbitmq-rel | 58 | ||||
| -rwxr-xr-x | scripts/rabbitmq-server | 355 | ||||
| -rw-r--r-- | scripts/rabbitmq-server.bat | 194 | ||||
| -rw-r--r-- | scripts/rabbitmq-service.bat | 257 | ||||
| -rw-r--r-- | scripts/rabbitmq-upgrade.bat | 8 | ||||
| -rw-r--r-- | scripts/rabbitmqctl.bat | 6 |
14 files changed, 219 insertions, 1413 deletions
diff --git a/scripts/cuttlefish b/scripts/cuttlefish Binary files differdeleted file mode 100755 index e63ac1c1b3..0000000000 --- a/scripts/cuttlefish +++ /dev/null diff --git a/scripts/rabbitmq-defaults b/scripts/rabbitmq-defaults index ba09c7ce62..eca44d8af4 100755 --- a/scripts/rabbitmq-defaults +++ b/scripts/rabbitmq-defaults @@ -18,41 +18,10 @@ ### next line potentially updated in package install steps SYS_PREFIX= -### next line will be updated when generating a standalone release -ERL_DIR= - CLEAN_BOOT_FILE=start_clean SASL_BOOT_FILE=start_sasl - -if [ -f "${RABBITMQ_HOME}/erlang.mk" ]; then - # RabbitMQ is executed from its source directory. The plugins - # directory and ERL_LIBS are tuned based on this. - RABBITMQ_DEV_ENV=1 -fi - -## Set default values - BOOT_MODULE="rabbit" -CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq -LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq -MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia -ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins -GENERATED_CONFIG_DIR=${SYS_PREFIX}/var/lib/rabbitmq/config -ADVANCED_CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/advanced.config -SCHEMA_DIR=${SYS_PREFIX}/var/lib/rabbitmq/schema - -PLUGINS_DIR="${RABBITMQ_HOME}/plugins" - -# RABBIT_HOME can contain a version number, so default plugins -# directory can be hard to find if we want to package some plugin -# separately. When RABBITMQ_HOME points to a standard location where -# it's usually being installed by package managers, we add -# "/usr/lib/rabbitmq/plugins" to plugin search path. -case "$RABBITMQ_HOME" in - /usr/lib/rabbitmq/*) - PLUGINS_DIR="/usr/lib/rabbitmq/plugins:$PLUGINS_DIR" - ;; -esac - -CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf +if test -z "$CONF_ENV_FILE" && test -z "$RABBITMQ_CONF_ENV_FILE"; then + CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf +fi diff --git a/scripts/rabbitmq-defaults.bat b/scripts/rabbitmq-defaults.bat index 18d4f46943..0da11f2a0c 100644 --- a/scripts/rabbitmq-defaults.bat +++ b/scripts/rabbitmq-defaults.bat @@ -1,23 +1,8 @@ @echo off
-REM ### next line potentially updated in package install steps
-REM set SYS_PREFIX=
-
-REM ### next line will be updated when generating a standalone release
-REM ERL_DIR=
-set ERL_DIR=
-
-REM This boot files isn't referenced in the batch scripts
-REM set SASL_BOOT_FILE=start_sasl
+set SASL_BOOT_FILE=start_sasl
set CLEAN_BOOT_FILE=start_clean
-
-if exist "%RABBITMQ_HOME%\erlang.mk" (
- REM RabbitMQ is executed from its source directory. The plugins
- REM directory and ERL_LIBS are tuned based on this.
- set RABBITMQ_DEV_ENV=1
-)
-
-REM ## Set default values
+set BOOT_MODULE=rabbit
if "!RABBITMQ_BASE!"=="" (
set RABBITMQ_BASE=!APPDATA!\RabbitMQ
@@ -29,22 +14,4 @@ if not exist "!RABBITMQ_BASE!" ( mkdir "!RABBITMQ_BASE!"
)
-REM BOOT_MODULE="rabbit"
-REM CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq
-REM LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
-REM MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
-REM ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
-set BOOT_MODULE=rabbit
-set CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
-set LOG_BASE=!RABBITMQ_BASE!\log
-set MNESIA_BASE=!RABBITMQ_BASE!\db
-set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
-set GENERATED_CONFIG_DIR=!RABBITMQ_BASE!\config
-set ADVANCED_CONFIG_FILE=!RABBITMQ_BASE!\advanced.config
-set SCHEMA_DIR=!RABBITMQ_BASE!\schema
-
-REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
-for /f "delims=" %%F in ("!TDP0!..\plugins") do set PLUGINS_DIR=%%~dpF%%~nF%%~xF
-
-REM CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
set CONF_ENV_FILE=!RABBITMQ_BASE!\rabbitmq-env-conf.bat
diff --git a/scripts/rabbitmq-diagnostics.bat b/scripts/rabbitmq-diagnostics.bat index 77078389b0..3a94c7520f 100644 --- a/scripts/rabbitmq-diagnostics.bat +++ b/scripts/rabbitmq-diagnostics.bat @@ -49,10 +49,6 @@ if not defined ERL_CRASH_DUMP_SECONDS ( -boot !CLEAN_BOOT_FILE! ^
-noinput -noshell -hidden -smp enable ^
!RABBITMQ_CTL_ERL_ARGS! ^
--kernel inet_dist_listen_min !RABBITMQ_CTL_DIST_PORT_MIN! ^
--kernel inet_dist_listen_max !RABBITMQ_CTL_DIST_PORT_MAX! ^
--sasl errlog_type error ^
--mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^
-run escript start ^
-escript main rabbitmqctl_escript ^
-extra "%RABBITMQ_HOME%\escript\rabbitmq-diagnostics" !STAR!
@@ -61,4 +57,6 @@ if ERRORLEVEL 1 ( exit /B %ERRORLEVEL%
)
+EXIT /B 0
+
endlocal
diff --git a/scripts/rabbitmq-env b/scripts/rabbitmq-env index 2430e76b5d..26c1db9026 100755 --- a/scripts/rabbitmq-env +++ b/scripts/rabbitmq-env @@ -91,20 +91,6 @@ rmq_realpath() { fi } -path_contains_existing_directory() { - local path="${1:?}" - local dir - local rc - local IFS=" - " - for dir in $(echo "$path" | tr ':' '\n'); do - if [ -d "$dir" ]; then - return 0 - fi - done - return 1 -} - RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")" ESCRIPT_DIR="${RABBITMQ_HOME}/escript" @@ -118,7 +104,10 @@ saved_RABBITMQ_PID_FILE="$RABBITMQ_PID_FILE" ## Get configuration variables from the configure environment file [ "x" = "x$RABBITMQ_CONF_ENV_FILE" ] && RABBITMQ_CONF_ENV_FILE=${CONF_ENV_FILE} -[ -f ${RABBITMQ_CONF_ENV_FILE} ] && . ${RABBITMQ_CONF_ENV_FILE} || true +if [ -f "${RABBITMQ_CONF_ENV_FILE}" ]; then + CONF_ENV_FILE_PHASE=rabbitmq-env + . ${RABBITMQ_CONF_ENV_FILE} || true +fi [ -n "$ERL_EPMD_PORT" ] && export ERL_EPMD_PORT [ -n "$ERL_EPMD_ADDRESS" ] && export ERL_EPMD_ADDRESS @@ -142,125 +131,17 @@ DEFAULT_MAX_NUMBER_OF_ATOMS=5000000 ## Common server defaults SERVER_ERL_ARGS=" +P $RABBITMQ_MAX_NUMBER_OF_PROCESSES +t $RABBITMQ_MAX_NUMBER_OF_ATOMS +stbt $RABBITMQ_SCHEDULER_BIND_TYPE +zdbbl $RABBITMQ_DISTRIBUTION_BUFFER_SIZE " -[ "x" = "x$RABBITMQ_USE_LONGNAME" ] && RABBITMQ_USE_LONGNAME=${USE_LONGNAME} -if [ "xtrue" = "x$RABBITMQ_USE_LONGNAME" ] ; then - RABBITMQ_NAME_TYPE=-name - [ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname -f` - [ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME} -else - RABBITMQ_NAME_TYPE=-sname - [ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname` - [ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME%%.*} -fi - ##--- Set environment vars RABBITMQ_<var_name> to defaults if not set -rmq_normalize_path() { - local path=$1 - - # Remove redundant slashes and strip a trailing slash for a - # PATH-like vars - ':' is the delimiter - echo "$path" | sed -e 's#/\{2,\}#/#g' -e 's#/$##' -e 's#/:#:#g' -} - -rmq_normalize_path_var() { - local var warning - - local prefix="WARNING:" - - for var in "$@"; do - local path=$(eval "echo \"\$$var\"") - case "$path" in - */) - warning=1 - echo "$prefix Removing trailing slash from $var" 1>&2 - ;; - esac - - eval "$var=$(rmq_normalize_path "$path")" - - if [ "x$warning" = "x1" ]; then - prefix=" " - fi - done -} - -rmq_check_if_shared_with_mnesia() { - local var warning - - local mnesia_dir=$(rmq_realpath "${RABBITMQ_MNESIA_DIR}") - local prefix="WARNING:" - - for var in "$@"; do - local dir=$(eval "echo \"\$$var\"") - - case $(rmq_realpath "$dir") in - ${mnesia_dir}) - warning=1 - echo "$prefix $var is equal to RABBITMQ_MNESIA_DIR" 1>&2 - ;; - ${mnesia_dir}/*) - warning=1 - echo "$prefix $var is located inside RABBITMQ_MNESIA_DIR" 1>&2 - ;; - esac - - if [ "x$warning" = "x1" ]; then - prefix=" " - fi - done - - if [ "x$warning" = "x1" ]; then - echo "$prefix => Auto-clustering will not work ('cluster_nodes' in rabbitmq.config)" 1>&2 - fi -} - -DEFAULT_NODE_IP_ADDRESS=auto -DEFAULT_NODE_PORT=5672 - -[ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS} -[ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${NODE_PORT} - -[ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS} -[ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT} - -[ "x" = "x$RABBITMQ_DIST_PORT" ] && RABBITMQ_DIST_PORT=${DIST_PORT} -[ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000)) -[ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000)) - -[ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS} -[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN=${CTL_DIST_PORT_MIN} -[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX=${CTL_DIST_PORT_MAX} -[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN=$((${RABBITMQ_DIST_PORT} + 10000)) -[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX=$((${RABBITMQ_DIST_PORT} + 10010)) - -[ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME} +# FIXME [ "x" = "x$RABBITMQ_IO_THREAD_POOL_SIZE" ] && RABBITMQ_IO_THREAD_POOL_SIZE=${IO_THREAD_POOL_SIZE} [ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS} -[ "x" = "x$RABBITMQ_CONFIG_FILE" ] && RABBITMQ_CONFIG_FILE=${CONFIG_FILE} -[ "x" = "x$RABBITMQ_LOG_BASE" ] && RABBITMQ_LOG_BASE=${LOG_BASE} -[ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE} [ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS} [ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS} [ "x" = "x$RABBITMQ_SERVER_CODE_PATH" ] && RABBITMQ_SERVER_CODE_PATH=${SERVER_CODE_PATH} -[ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${MNESIA_DIR} -[ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME} -[ "x" = "x$RABBITMQ_QUORUM_DIR" ] && RABBITMQ_QUORUM_DIR=${RABBITMQ_MNESIA_DIR}/quorum -[ "x" = "x$RABBITMQ_GENERATED_CONFIG_DIR" ] && RABBITMQ_GENERATED_CONFIG_DIR=${GENERATED_CONFIG_DIR} -[ "x" = "x$RABBITMQ_ADVANCED_CONFIG_FILE" ] && RABBITMQ_ADVANCED_CONFIG_FILE=${ADVANCED_CONFIG_FILE} -[ "x" = "x$RABBITMQ_SCHEMA_DIR" ] && RABBITMQ_SCHEMA_DIR=${SCHEMA_DIR} [ "x" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT="true" [ "xtrue" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT_FLAG="+B i" -rmq_normalize_path_var \ - RABBITMQ_CONFIG_FILE \ - RABBITMQ_LOG_BASE \ - RABBITMQ_MNESIA_BASE \ - RABBITMQ_MNESIA_DIR \ - RABBITMQ_QUORUM_DIR - -[ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE="$PID_FILE" - if [ -n "$saved_RABBITMQ_PID_FILE" ] && \ [ "$saved_RABBITMQ_PID_FILE" != "$RABBITMQ_PID_FILE" ] then @@ -271,155 +152,19 @@ then RABBITMQ_PID_FILE="$saved_RABBITMQ_PID_FILE" fi -# Note: at this point, no RABBITMQ_PID_FILE is set so we use the mnesia dir value -[ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE="${RABBITMQ_MNESIA_DIR}.pid" - -rmq_normalize_path_var RABBITMQ_PID_FILE - [ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE} -[ "x" != "x$RABBITMQ_FEATURE_FLAGS_FILE" ] && RABBITMQ_FEATURE_FLAGS_FILE_source=environment -[ "x" = "x$RABBITMQ_FEATURE_FLAGS_FILE" ] && RABBITMQ_FEATURE_FLAGS_FILE=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-feature_flags -rmq_normalize_path_var RABBITMQ_FEATURE_FLAGS_FILE - -[ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR} -[ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand -rmq_normalize_path_var RABBITMQ_PLUGINS_EXPAND_DIR - -[ "x" != "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE_source=environment -[ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE} -rmq_normalize_path_var RABBITMQ_ENABLED_PLUGINS_FILE - -[ "x" != "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR_source=environment -[ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR} -rmq_normalize_path_var RABBITMQ_PLUGINS_DIR - -## Log rotation -[ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS} -[ "x" != "x$RABBITMQ_LOGS" ] && export RABBITMQ_LOGS_source=environment -[ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log" -[ "x" = "x$RABBITMQ_UPGRADE_LOG" ] && RABBITMQ_UPGRADE_LOG="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}_upgrade.log" -[ "x" = "x$ERL_CRASH_DUMP" ] && ERL_CRASH_DUMP="${RABBITMQ_LOG_BASE}/erl_crash.dump" - -rmq_normalize_path_var RABBITMQ_LOGS - -rmq_normalize_path_var RABBITMQ_UPGRADE_LOG - -# Check if files and directories non-related to Mnesia are configured -# to be in $RABBITMQ_MNESIA_DIR. If this is the case, issue a warning -# because it will prevent auto-clustering from working (the node will be -# considered non-virgin). - -rmq_check_if_shared_with_mnesia \ - RABBITMQ_CONFIG_FILE \ - RABBITMQ_LOG_BASE \ - RABBITMQ_PID_FILE \ - RABBITMQ_FEATURE_FLAGS_FILE \ - RABBITMQ_PLUGINS_EXPAND_DIR \ - RABBITMQ_ENABLED_PLUGINS_FILE \ - RABBITMQ_PLUGINS_DIR \ - RABBITMQ_LOGS \ - RABBITMQ_UPGRADE_LOG - ##--- End of overridden <var_name> variables -## Development-specific environment. -if [ "${RABBITMQ_DEV_ENV}" ]; then - if [ "$RABBITMQ_FEATURE_FLAGS_FILE_source" != 'environment' -o \ - "$RABBITMQ_PLUGINS_DIR_source" != 'environment' -o \ - "$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' ]; then - # We need to query the running node for the plugins directory - # and the "enabled plugins" file. - for arg in "$@"; do - case "$arg" in - -n) - next_is_node=1 - ;; - *) - if test "$next_is_node"; then - # If the executed script is being passed a remote node - # name, use it here to query the remote node. - node_arg="-n $arg" - break - fi - ;; - esac - done - eval $( (${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl $node_arg eval \ - '{ok, F} = application:get_env(rabbit, feature_flags_file), - {ok, P} = application:get_env(rabbit, plugins_dir), - {ok, E} = application:get_env(rabbit, enabled_plugins_file), - B = os:getenv("RABBITMQ_MNESIA_BASE"), - M = os:getenv("RABBITMQ_MNESIA_DIR"), - io:format( - "feature_flags_file=\"~s\"~n" - "plugins_dir=\"~s\"~n" - "enabled_plugins_file=\"~s\"~n" - "mnesia_base=\"~s\"~n" - "mnesia_dir=\"~s\"~n", [F, P, E, B, M]).' \ - 2>/dev/null | grep -E '^(feature_flags_file|plugins_dir|enabled_plugins_file|mnesia_base|mnesia_dir)=') || :) - - if [ "${feature_flags_file}" -a \ - "$RABBITMQ_FEATURE_FLAGS_FILE_source" != 'environment' ]; then - RABBITMQ_FEATURE_FLAGS_FILE="${feature_flags_file}" - fi - if [ "${plugins_dir}" -a \ - "$RABBITMQ_PLUGINS_DIR_source" != 'environment' ]; then - RABBITMQ_PLUGINS_DIR="${plugins_dir}" - fi - if [ "${enabled_plugins_file}" -a \ - "$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' ]; then - RABBITMQ_ENABLED_PLUGINS_FILE="${enabled_plugins_file}" - fi - if [ "${mnesia_base}" -a \ - "$RABBITMQ_MNESIA_BASE_source" != 'environment' ]; then - RABBITMQ_MNESIA_BASE="${mnesia_base}" - fi - if [ "${mnesia_dir}" -a \ - "$RABBITMQ_MNESIA_DIR_source" != 'environment' ]; then - RABBITMQ_MNESIA_DIR="${mnesia_dir}" - fi - if [ "${mnesia_dir}" -a \ - "$RABBITMQ_QUORUM_DIR_source" != 'environment' ]; then - RABBITMQ_QUORUM_DIR="${mnesia_dir}/quorum" - fi - fi - - if path_contains_existing_directory "${RABBITMQ_PLUGINS_DIR}" ; then - # RabbitMQ was started with "make run-broker" from its own - # source tree. Take rabbit_common from the plugins directory. - ERL_LIBS="${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}" +_rmq_env_set_erl_libs() +{ + if [ -n "$ERL_LIBS" ] + then + export ERL_LIBS="$RABBITMQ_HOME/plugins:$ERL_LIBS" else - # RabbitMQ runs from a testsuite or a plugin. The .ez files are - # not available under RabbitMQ source tree. We need to look at - # $DEPS_DIR and default locations. - - if [ "${DEPS_DIR}" -a -d "${DEPS_DIR}/rabbit_common/ebin" ]; then - # $DEPS_DIR is set, and it contains rabbitmq-common, use - # this. - DEPS_DIR_norm="${DEPS_DIR}" - elif [ -f "${RABBITMQ_SCRIPTS_DIR}/../../../erlang.mk" -a \ - -d "${RABBITMQ_SCRIPTS_DIR}/../../rabbit_common/ebin" ]; then - # Look at default locations: "deps" subdirectory inside a - # plugin or the Umbrella. - DEPS_DIR_norm="${RABBITMQ_SCRIPTS_DIR}/../.." - fi - DEPS_DIR_norm=$(rmq_realpath "${DEPS_DIR_norm}") - - ERL_LIBS="${DEPS_DIR_norm}:${ERL_LIBS}" + export ERL_LIBS="$RABBITMQ_HOME/plugins" fi -else - if path_contains_existing_directory "${RABBITMQ_PLUGINS_DIR}" ; then - # RabbitMQ was started from its install directory. Take - # rabbit_common from the plugins directory. - ERL_LIBS="${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}" - fi -fi - -ERL_LIBS=${ERL_LIBS%:} -if [ "$ERL_LIBS" ]; then - export ERL_LIBS -fi +} run_escript() { @@ -428,17 +173,15 @@ run_escript() escript="${1:?escript must be defined}" shift + _rmq_env_set_erl_libs + # Important: do not quote RABBITMQ_CTL_ERL_ARGS as they must be # word-split # shellcheck disable=SC2086 - exec "${ERL_DIR}erl" +B \ + exec erl +B \ -boot "$CLEAN_BOOT_FILE" \ -noinput -noshell -hidden -smp enable \ $RABBITMQ_CTL_ERL_ARGS \ - -kernel inet_dist_listen_min "$RABBITMQ_CTL_DIST_PORT_MIN" \ - -kernel inet_dist_listen_max "$RABBITMQ_CTL_DIST_PORT_MAX" \ - -sasl errlog_type error \ - -mnesia dir "\"$RABBITMQ_MNESIA_DIR\"" \ -run escript start \ -escript main "$escript_main" \ -extra "$escript" "$@" diff --git a/scripts/rabbitmq-env.bat b/scripts/rabbitmq-env.bat index e178deb48c..92853a2362 100644 --- a/scripts/rabbitmq-env.bat +++ b/scripts/rabbitmq-env.bat @@ -14,6 +14,12 @@ set SCRIPT_DIR=%TDP0% set SCRIPT_NAME=%1
for /f "delims=" %%F in ("%SCRIPT_DIR%..") do set RABBITMQ_HOME=%%~dpF%%~nF%%~xF
+if defined ERL_LIBS (
+ set ERL_LIBS=%RABBITMQ_HOME%\plugins;%ERL_LIBS%
+) else (
+ set ERL_LIBS=%RABBITMQ_HOME%\plugins
+)
+
REM If ERLANG_HOME is not defined, check if "erl.exe" is available in
REM the path and use that.
if not defined ERLANG_HOME (
@@ -82,163 +88,16 @@ if "!RABBITMQ_MAX_NUMBER_OF_ATOMS!"=="" ( set RABBITMQ_MAX_NUMBER_OF_ATOMS=!DEFAULT_MAX_NUMBER_OF_ATOMS!
)
-REM Common defaults
+REM Common server defaults
set SERVER_ERL_ARGS=+P !RABBITMQ_MAX_NUMBER_OF_PROCESSES! +t !RABBITMQ_MAX_NUMBER_OF_ATOMS! +stbt !RABBITMQ_SCHEDULER_BIND_TYPE! +zdbbl !RABBITMQ_DISTRIBUTION_BUFFER_SIZE!
-REM Check for the short names here too
-if "!RABBITMQ_USE_LONGNAME!"=="true" (
- set RABBITMQ_NAME_TYPE=-name
- set NAMETYPE=longnames
-) else (
- if "!USE_LONGNAME!"=="true" (
- set RABBITMQ_USE_LONGNAME=true
- set RABBITMQ_NAME_TYPE=-name
- set NAMETYPE=longnames
- ) else (
- set RABBITMQ_USE_LONGNAME=false
- set RABBITMQ_NAME_TYPE=-sname
- set NAMETYPE=shortnames
- )
-)
-
-REM [ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME}
-if "!RABBITMQ_NODENAME!"=="" (
- if "!NODENAME!"=="" (
- REM We use Erlang to query the local hostname because
- REM !COMPUTERNAME! and Erlang may return different results.
- REM Start erl with -sname to make sure epmd is started.
- call "%ERLANG_HOME%\bin\erl.exe" -A0 -noinput -boot start_clean -sname rabbit-prelaunch-epmd -eval "init:stop()." >nul 2>&1
- for /f "delims=" %%F in ('call "%ERLANG_HOME%\bin\erl.exe" -A0 -noinput -boot start_clean -eval "net_kernel:start([list_to_atom(""rabbit-gethostname-"" ++ os:getpid()), %NAMETYPE%]), [_, H] = string:tokens(atom_to_list(node()), ""@""), io:format(""~s~n"", [H]), init:stop()."') do @set HOSTNAME=%%F
- set RABBITMQ_NODENAME=rabbit@!HOSTNAME!
- set HOSTNAME=
- ) else (
- set RABBITMQ_NODENAME=!NODENAME!
- )
-)
-set NAMETYPE=
-
-REM
REM ##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
-REM
-REM DEFAULT_NODE_IP_ADDRESS=auto
-REM DEFAULT_NODE_PORT=5672
-REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
-REM [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${NODE_PORT}
-REM [ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS}
-REM [ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT}
-
-if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!NODE_IP_ADDRESS!"=="" (
- set RABBITMQ_NODE_IP_ADDRESS=!NODE_IP_ADDRESS!
- )
-)
-
-if "!RABBITMQ_NODE_PORT!"=="" (
- if not "!NODE_PORT!"=="" (
- set RABBITMQ_NODE_PORT=!NODE_PORT!
- )
-)
-
-if "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_NODE_IP_ADDRESS=auto
- )
-) else (
- if "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_NODE_PORT=5672
- )
-)
-
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && RABBITMQ_DIST_PORT=${DIST_PORT}
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000))
-REM [ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000))
-
-if "!RABBITMQ_DIST_PORT!"=="" (
- if "!DIST_PORT!"=="" (
- if "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_DIST_PORT=25672
- ) else (
- set /a RABBITMQ_DIST_PORT=20000+!RABBITMQ_NODE_PORT!
- )
- ) else (
- set RABBITMQ_DIST_PORT=!DIST_PORT!
- )
-)
REM [ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}
if "!RABBITMQ_SERVER_ERL_ARGS!"=="" (
set RABBITMQ_SERVER_ERL_ARGS=!SERVER_ERL_ARGS!
)
-REM [ "x" = "x$RABBITMQ_CONFIG_FILE" ] && RABBITMQ_CONFIG_FILE=${CONFIG_FILE}
-if "!RABBITMQ_CONFIG_FILE!"=="" (
- if "!CONFIG_FILE!"=="" (
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
- ) else (
- set RABBITMQ_CONFIG_FILE=!CONFIG_FILE:"=!
- )
-) else (
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE:"=!
-)
-
-if "!RABBITMQ_GENERATED_CONFIG_DIR!"=="" (
- if "!GENERATED_CONFIG_DIR!"=="" (
- set RABBITMQ_GENERATED_CONFIG_DIR=!RABBITMQ_BASE!\config
- ) else (
- set RABBITMQ_GENERATED_CONFIG_DIR=!GENERATED_CONFIG_DIR:"=!
- )
-) else (
- set RABBITMQ_GENERATED_CONFIG_DIR=!RABBITMQ_GENERATED_CONFIG_DIR:"=!
-)
-
-if "!RABBITMQ_ADVANCED_CONFIG_FILE!"=="" (
- if "!ADVANCED_CONFIG_FILE!"=="" (
- set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_BASE!\advanced.config
- ) else (
- set RABBITMQ_ADVANCED_CONFIG_FILE=!ADVANCED_CONFIG_FILE:"=!
- )
-) else (
- set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE:"=!
-)
-
-if "!RABBITMQ_SCHEMA_DIR!" == "" (
- if "!SCHEMA_DIR!"=="" (
- set RABBITMQ_SCHEMA_DIR=!RABBITMQ_HOME!\priv\schema
- ) else (
- set RABBITMQ_SCHEMA_DIR=!SCHEMA_DIR:"=!
- )
-) else (
- set RABBITMQ_SCHEMA_DIR=!RABBITMQ_SCHEMA_DIR:"=!
-)
-
-REM [ "x" = "x$RABBITMQ_LOG_BASE" ] && RABBITMQ_LOG_BASE=${LOG_BASE}
-if "!RABBITMQ_LOG_BASE!"=="" (
- if "!LOG_BASE!"=="" (
- set RABBITMQ_LOG_BASE=!RABBITMQ_BASE!\log
- ) else (
- set RABBITMQ_LOG_BASE=!LOG_BASE:"=!
- )
-) else (
- set RABBITMQ_LOG_BASE=!RABBITMQ_LOG_BASE:"=!
-)
-if not exist "!RABBITMQ_LOG_BASE!" (
- mkdir "!RABBITMQ_LOG_BASE!"
-)
-
-REM [ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE}
-if "!RABBITMQ_MNESIA_BASE!"=="" (
- if "!MNESIA_BASE!"=="" (
- set RABBITMQ_MNESIA_BASE=!RABBITMQ_BASE!\db
- ) else (
- set RABBITMQ_MNESIA_BASE=!MNESIA_BASE:"=!
- )
-) else (
- set RABBITMQ_MNESIA_BASE=!RABBITMQ_MNESIA_BASE:"=!
-)
-if not exist "!RABBITMQ_MNESIA_BASE!" (
- mkdir "!RABBITMQ_MNESIA_BASE!"
-)
-
REM [ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
if "!RABBITMQ_SERVER_START_ARGS!"=="" (
if not "!SERVER_START_ARGS!"=="" (
@@ -253,34 +112,6 @@ if "!RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS!"=="" ( )
)
-REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${MNESIA_DIR}
-REM [ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}
-if "!RABBITMQ_MNESIA_DIR!"=="" (
- if "!MNESIA_DIR!"=="" (
- set RABBITMQ_MNESIA_DIR=!RABBITMQ_MNESIA_BASE!\!RABBITMQ_NODENAME!-mnesia
- ) else (
- set RABBITMQ_MNESIA_DIR=!MNESIA_DIR:"=!
- )
-) else (
- set RABBITMQ_MNESIA_DIR=!RABBITMQ_MNESIA_DIR:"=!
-)
-if not exist "!RABBITMQ_MNESIA_DIR!" (
- mkdir "!RABBITMQ_MNESIA_DIR!"
-)
-
-REM [ "x" = "x$RABBITMQ_QUORUM_DIR" ] && RABBITMQ_QUORUM_DIR=${RABBITMQ_MNESIA_DIR}/quorum
-if "!RABBITMQ_QUORUM_DIR!"=="" (
- set RABBITMQ_QUORUM_DIR=!RABBITMQ_MNESIA_DIR!\quorum
-)
-if not exist "!RABBITMQ_QUORUM_DIR!" (
- mkdir "!RABBITMQ_QUORUM_DIR!"
-)
-for /f "delims=" %%F in ("!RABBITMQ_QUORUM_DIR!") do set RABBITMQ_QUORUM_DIR=%%~sF
-
-REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${PID_FILE}
-REM [ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${RABBITMQ_MNESIA_DIR}.pid
-REM No Windows equivalent
-
REM [ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE}
if "!RABBITMQ_BOOT_MODULE!"=="" (
if "!BOOT_MODULE!"=="" (
@@ -290,114 +121,12 @@ if "!RABBITMQ_BOOT_MODULE!"=="" ( )
)
-REM [ "x" = "x$RABBITMQ_FEATURE_FLAGS_FILE" ] && RABBITMQ_FEATURE_FLAGS_FILE=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-feature_flags
-if "!RABBITMQ_FEATURE_FLAGS_FILE!"=="" (
- if "!FEATURE_FLAGS_FILE!"=="" (
- set RABBITMQ_FEATURE_FLAGS_FILE=!RABBITMQ_MNESIA_BASE!\!RABBITMQ_NODENAME!-feature_flags
- ) else (
- set RABBITMQ_FEATURE_FLAGS_FILE=!FEATURE_FLAGS_FILE:"=!
- )
-) else (
- set RABBITMQ_FEATURE_FLAGS_FILE=!RABBITMQ_FEATURE_FLAGS_FILE:"=!
- set RABBITMQ_FEATURE_FLAGS_FILE_source=environment
-)
-
-REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR}
-REM [ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand
-if "!RABBITMQ_PLUGINS_EXPAND_DIR!"=="" (
- if "!PLUGINS_EXPAND_DIR!"=="" (
- set RABBITMQ_PLUGINS_EXPAND_DIR=!RABBITMQ_MNESIA_BASE!\!RABBITMQ_NODENAME!-plugins-expand
- ) else (
- set RABBITMQ_PLUGINS_EXPAND_DIR=!PLUGINS_EXPAND_DIR:"=!
- )
-) else (
- set RABBITMQ_PLUGINS_EXPAND_DIR=!RABBITMQ_PLUGINS_EXPAND_DIR:"=!
-)
-
-REM [ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
-if "!RABBITMQ_ENABLED_PLUGINS_FILE!"=="" (
- if "!ENABLED_PLUGINS_FILE!"=="" (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
- ) else (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!ENABLED_PLUGINS_FILE:"=!
- )
-) else (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!RABBITMQ_ENABLED_PLUGINS_FILE:"=!
- set RABBITMQ_ENABLED_PLUGINS_FILE_source=environment
-)
-if not exist "!RABBITMQ_ENABLED_PLUGINS_FILE!" (
- for /f "delims=" %%F in ("!RABBITMQ_ENABLED_PLUGINS_FILE!") do mkdir "%%~dpF" 2>NUL
- copy /y NUL "!RABBITMQ_ENABLED_PLUGINS_FILE!" >NUL
-)
-
-REM [ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
-if "!RABBITMQ_PLUGINS_DIR!"=="" (
- if "!PLUGINS_DIR!"=="" (
- set RABBITMQ_PLUGINS_DIR=!RABBITMQ_HOME!\plugins
- ) else (
- set RABBITMQ_PLUGINS_DIR=!PLUGINS_DIR:"=!
- )
-) else (
- set RABBITMQ_PLUGINS_DIR=!RABBITMQ_PLUGINS_DIR:"=!
- set RABBITMQ_PLUGINS_DIR_source=environment
-)
-if not exist "!RABBITMQ_PLUGINS_DIR!" (
- mkdir "!RABBITMQ_PLUGINS_DIR!"
-)
-
-REM ## Log rotation
-REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS}
-REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log"
-if "!RABBITMQ_LOGS!"=="" (
- if "!LOGS!"=="" (
- set RABBITMQ_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!.log
- ) else (
- set RABBITMQ_LOGS=!LOGS:"=!
- )
-) else (
- set RABBITMQ_LOGS=!RABBITMQ_LOGS:"=!
-)
-if not "!RABBITMQ_LOGS!" == "-" (
- if not exist "!RABBITMQ_LOGS!" (
- for /f "delims=" %%F in ("!RABBITMQ_LOGS!") do mkdir "%%~dpF" 2>NUL
- copy /y NUL "!RABBITMQ_LOGS!" >NUL
- )
-)
-rem [ "x" = "x$RABBITMQ_UPGRADE_LOG" ] && RABBITMQ_UPGRADE_LOG="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}_upgrade.log"
-if "!RABBITMQ_UPGRADE_LOG!" == "" (
- set RABBITMQ_UPGRADE_LOG=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!_upgrade.log
-) else (
- set RABBITMQ_UPGRADE_LOG=!RABBITMQ_UPGRADE_LOG:"=!
-)
-REM [ "x" = "x$ERL_CRASH_DUMP"] && ERL_CRASH_DUMP="${RABBITMQ_LOG_BASE}/erl_crash.dump"
-if "!ERL_CRASH_DUMP!"=="" (
- set ERL_CRASH_DUMP=!RABBITMQ_LOG_BASE!\erl_crash.dump
-) else (
- set ERL_CRASH_DUMP=!ERL_CRASH_DUMP:"=!
-)
-
REM [ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}
if "!RABBITMQ_CTL_ERL_ARGS!"=="" (
if not "!CTL_ERL_ARGS!"=="" (
set RABBITMQ_CTL_ERL_ARGS=!CTL_ERL_ARGS!
)
)
-if "!RABBITMQ_CTL_DIST_PORT_MIN!"=="" (
- if not "!CTL_DIST_PORT_MIN!"=="" (
- set RABBITMQ_CTL_DIST_PORT_MIN=!CTL_DIST_PORT_MIN!
- )
-)
-if "!RABBITMQ_CTL_DIST_PORT_MAX!"=="" (
- if not "!CTL_DIST_PORT_MAX!"=="" (
- set RABBITMQ_CTL_DIST_PORT_MAX=!CTL_DIST_PORT_MAX!
- )
-)
-if "!RABBITMQ_CTL_DIST_PORT_MIN!"=="" (
- set /a RABBITMQ_CTL_DIST_PORT_MIN=10000+!RABBITMQ_DIST_PORT!
-)
-if "!RABBITMQ_CTL_DIST_PORT_MAX!"=="" (
- set /a RABBITMQ_CTL_DIST_PORT_MAX=10010+!RABBITMQ_DIST_PORT!
-)
REM ADDITIONAL WINDOWS ONLY CONFIG ITEMS
@@ -409,93 +138,6 @@ if "!RABBITMQ_SERVICENAME!"=="" ( )
)
-REM Development-specific environment.
-if defined RABBITMQ_DEV_ENV (
- if "!SCRIPT_NAME!" == "rabbitmq-plugins" (
- REM We may need to query the running node for the plugins directory
- REM and the "enabled plugins" file.
- if not "%RABBITMQ_FEATURE_FLAGS_FILE_source%" == "environment" (
- for /f "delims=" %%F in ('!SCRIPT_DIR!\rabbitmqctl.bat eval "{ok, P} = application:get_env(rabbit, feature_flags_file), io:format(""~s~n"", [P])."') do @set feature_flags_file=%%F
- if exist "!feature_flags_file!" (
- set RABBITMQ_FEATURE_FLAGS_FILE=!feature_flags_file:"=!
- )
- REM set feature_flags_file=
- )
- if not "%RABBITMQ_PLUGINS_DIR_source%" == "environment" (
- for /f "delims=" %%F in ('!SCRIPT_DIR!\rabbitmqctl.bat eval "{ok, P} = application:get_env(rabbit, plugins_dir), io:format(""~s~n"", [P])."') do @set plugins_dir=%%F
- if exist "!plugins_dir!" (
- set RABBITMQ_PLUGINS_DIR=!plugins_dir:"=!
- )
- REM set plugins_dir=
- )
- if not "%RABBITMQ_ENABLED_PLUGINS_FILE_source%" == "environment" (
- for /f "delims=" %%F in ('!SCRIPT_DIR!\rabbitmqctl.bat eval "{ok, P} = application:get_env(rabbit, enabled_plugins_file), io:format(""~s~n"", [P])."') do @set enabled_plugins_file=%%F
- if exist "!enabled_plugins_file!" (
- set RABBITMQ_ENABLED_PLUGINS_FILE=!enabled_plugins_file:"=!
- )
- REM set enabled_plugins_file=
- )
- )
-
- if exist "!RABBITMQ_PLUGINS_DIR!" (
- REM RabbitMQ was started with "make run-broker" from its own
- REM source tree. Take rabbit_common from the plugins directory.
- set ERL_LIBS=!RABBITMQ_PLUGINS_DIR!;!ERL_LIBS!
- ) else (
- REM RabbitMQ runs from a testsuite or a plugin. The .ez files are
- REM not available under RabbitMQ source tree. We need to look at
- REM $DEPS_DIR and default locations.
-
- if "!DEPS_DIR!" == "" (
- if exist "!RABBITMQ_HOME!\..\..\deps\rabbit_common\erlang.mk" (
- REM Dependencies in the Umbrella or a plugin.
- set DEPS_DIR_norm=!RABBITMQ_HOME!\..\..\deps
- ) else (
- if exist "!RABBITMQ_HOME!\deps\rabbit_common\erlang.mk" (
- REM Dependencies in the broker.
- set DEPS_DIR_norm=!RABBITMQ_HOME!\deps
- )
- )
- ) else (
- for /f "delims=" %%F in ("!DEPS_DIR!") do @set DEPS_DIR_norm=%%~dpF%%~nF%%~xF
- )
-
- set ERL_LIBS=!DEPS_DIR_norm!;!ERL_LIBS!
- )
-) else (
- if exist "!RABBITMQ_PLUGINS_DIR!" (
- REM RabbitMQ was started from its install directory. Take
- REM rabbit_common from the plugins directory.
- set ERL_LIBS=!RABBITMQ_PLUGINS_DIR:"=!;!ERL_LIBS:"=!
- )
-)
-
-REM Ensure ERL_LIBS begins with valid path
-set ERL_LIBS_orig=%ERL_LIBS:"=%
-set ERL_LIBS=
-call :filter_paths "%ERL_LIBS_orig%"
-goto :filter_paths_done
-
-:filter_paths
-set paths=%1
-set paths=%paths:"=%
-for /f "tokens=1* delims=;" %%a in ("%paths%") do (
- if not "%%a" == "" call :filter_path "%%a"
- if not "%%b" == "" call :filter_paths "%%b"
-)
-set paths=
-goto :eof
-
-:filter_path
-IF "%ERL_LIBS%"=="" (
- set "ERL_LIBS=%~dp1%~n1%~x1"
-) else (
- set "ERL_LIBS=!ERL_LIBS!;%~dp1%~n1%~x1"
-)
-goto :eof
-
-:filter_paths_done
-
REM Environment cleanup
set BOOT_MODULE=
set CONFIG_FILE=
@@ -509,6 +151,6 @@ set SCRIPT_NAME= set TDP0=
REM ##--- End of overridden <var_name> variables
-REM
+
REM # Since we source this elsewhere, don't accidentally stop execution
REM true
diff --git a/scripts/rabbitmq-plugins.bat b/scripts/rabbitmq-plugins.bat index e985151e56..e45e810c53 100644 --- a/scripts/rabbitmq-plugins.bat +++ b/scripts/rabbitmq-plugins.bat @@ -49,10 +49,6 @@ if not defined ERL_CRASH_DUMP_SECONDS ( -boot !CLEAN_BOOT_FILE! ^
-noinput -noshell -hidden -smp enable ^
!RABBITMQ_CTL_ERL_ARGS! ^
--kernel inet_dist_listen_min !RABBITMQ_CTL_DIST_PORT_MIN! ^
--kernel inet_dist_listen_max !RABBITMQ_CTL_DIST_PORT_MAX! ^
--sasl errlog_type error ^
--mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^
-run escript start ^
-escript main rabbitmqctl_escript ^
-extra "%RABBITMQ_HOME%\escript\rabbitmq-plugins" !STAR!
@@ -61,5 +57,7 @@ if ERRORLEVEL 1 ( exit /B %ERRORLEVEL%
)
+EXIT /B 0
+
endlocal
endlocal
diff --git a/scripts/rabbitmq-queues.bat b/scripts/rabbitmq-queues.bat index c90a696806..028e2664c9 100644 --- a/scripts/rabbitmq-queues.bat +++ b/scripts/rabbitmq-queues.bat @@ -49,11 +49,6 @@ if not defined ERL_CRASH_DUMP_SECONDS ( -boot !CLEAN_BOOT_FILE! ^
-noinput -noshell -hidden -smp enable ^
!RABBITMQ_CTL_ERL_ARGS! ^
--kernel inet_dist_listen_min !RABBITMQ_CTL_DIST_PORT_MIN! ^
--kernel inet_dist_listen_max !RABBITMQ_CTL_DIST_PORT_MAX! ^
--sasl errlog_type error ^
--mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^
--nodename !RABBITMQ_NODENAME! ^
-run escript start ^
-escript main rabbitmqctl_escript ^
-extra "%RABBITMQ_HOME%\escript\rabbitmq-queues" !STAR!
@@ -62,5 +57,7 @@ if ERRORLEVEL 1 ( exit /B %ERRORLEVEL%
)
+EXIT /B 0
+
endlocal
endlocal
diff --git a/scripts/rabbitmq-rel b/scripts/rabbitmq-rel new file mode 100755 index 0000000000..a96ec78764 --- /dev/null +++ b/scripts/rabbitmq-rel @@ -0,0 +1,58 @@ +#!/usr/bin/env escript +%% vim:ft=erlang:sw=2:et: + +main(["show-rel"]) -> + Rel = get_rel(), + io:format("~p.~n", [Rel]); +main(["gen-boot"]) -> + generate_rel(), + generate_boot(). + +get_rel() -> + ok = application:load(rabbit), + Apps0 = get_apps(rabbit), + Apps1 = lists:sort( + fun + (_, rabbitmq_prelaunch) -> false; + (rabbitmq_prelaunch, _) -> true; + (_, mnesia) -> true; + (mnesia, _) -> false; + (A, B) -> A =< B + end, Apps0), + Apps = [{App, get_vsn(App)} || App <- Apps1], + + ERTSVersion = erlang:system_info(version), + RabbitVersion = get_vsn(rabbit), + + {release, + {"RabbitMQ", RabbitVersion}, + {erts, ERTSVersion}, + Apps}. + +get_apps(App) -> + ok = load_app(App), + {ok, DirectDeps} = application:get_key(App, applications), + lists:umerge( + [lists:usort(get_apps(Dep)) || Dep <- DirectDeps] ++ + [lists:usort([kernel, stdlib, sasl, App, mnesia])]). + +load_app(App) -> + case application:load(App) of + ok -> ok; + {error, {already_loaded, App}} -> ok + end. + +generate_rel() -> + Rel = get_rel(), + io:format("~p.~n", [Rel]), + Output = io_lib:format("~p.~n", [Rel]), + ok = file:write_file("rabbit.rel", Output). + +generate_boot() -> + Options = [local, {path, code:get_path()}], + ok = systools:make_script("rabbit", Options). + +get_vsn(App) -> + load_app(App), + {ok, Vsn} = application:get_key(App, vsn), + Vsn. diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server index 4a2737a5e3..c28755f9ce 100755 --- a/scripts/rabbitmq-server +++ b/scripts/rabbitmq-server @@ -1,4 +1,5 @@ #!/bin/sh +# vim:sw=4:et: ## The contents of this file are subject to the Mozilla Public License ## Version 1.1 (the "License"); you may not use this file except in ## compliance with the License. You may obtain a copy of the License @@ -19,247 +20,18 @@ set -e # Get default settings with user overrides for (RABBITMQ_)<var_name> # Non-empty defaults should be set in rabbitmq-env -. `dirname $0`/rabbitmq-env - -RABBITMQ_START_RABBIT= -[ "x" = "x$RABBITMQ_ALLOW_INPUT" ] && RABBITMQ_START_RABBIT=" -noinput" -[ "x" = "x$RABBITMQ_NODE_ONLY" ] && RABBITMQ_START_RABBIT="$RABBITMQ_START_RABBIT -s $RABBITMQ_BOOT_MODULE boot " - -case "$(uname -s)" in - CYGWIN*) # we make no attempt to record the cygwin pid; rabbitmqctl wait - # will not be able to make sense of it anyway - ;; - *) # When -detached is passed, we don't write the pid, since it'd be the - # wrong one - detached="" - for opt in "$@"; do - if [ "$opt" = "-detached" ]; then - detached="true" - fi - done - if [ $detached ]; then - echo "Warning: PID file not written; -detached was passed." 1>&2 - else - RABBITMQ_PID_DIR="$(dirname ${RABBITMQ_PID_FILE})" - EX_CANTCREAT=73 # Standard exit code from sysexits(2) - if ! mkdir -p "$RABBITMQ_PID_DIR"; then - # Better diagnostics - 'mkdir -p' reports only the first directory in chain that - # it fails to create - echo "Failed to create directory: $RABBITMQ_PID_DIR" - exit $EX_CANTCREAT - fi - if ! echo $$ > ${RABBITMQ_PID_FILE}; then - # Better diagnostics - otherwise the only report in logs is about failed 'echo' - # command, but without any other details: neither what script has failed nor what - # file output was redirected to. - echo "Failed to write pid file: ${RABBITMQ_PID_FILE}" - exit $EX_CANTCREAT - fi - fi -esac - -RABBITMQ_EBIN_ROOT="${RABBITMQ_HOME}/ebin" +SCRIPTS_DIR=$(dirname "$0") +. "$SCRIPTS_DIR/rabbitmq-env" [ "$NOTIFY_SOCKET" ] && RUNNING_UNDER_SYSTEMD=true -get_noex() { - if [ "x" = "x${1}" ]; then - echo "" - else - local BASENAME=$(basename $1) - local DIRNAME=$(dirname $1) - if [ "x." = "x${DIRNAME}" ]; then - echo "${BASENAME%.*}" - else - echo "${DIRNAME}/${BASENAME%.*}" - fi - fi -} - -# Check that advanced config file has the .config extension -# Add .config extension if it's empty - -RABBITMQ_ADVANCED_CONFIG_FILE_NOEX=$(get_noex ${RABBITMQ_ADVANCED_CONFIG_FILE}) -if [ "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" \ - -o "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" ]; then - RABBITMQ_ADVANCED_CONFIG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config" -fi - - -RABBITMQ_CONFIG_FILE_NOEX=$(get_noex ${RABBITMQ_CONFIG_FILE}) -# Extension is not specified. -# Determine config type from file - -if [ "${RABBITMQ_CONFIG_FILE_NOEX}" = "${RABBITMQ_CONFIG_FILE}" ]; then - if [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.config" ]; then - if [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.conf" ]; then - # Both files exist. Print a warning. - _rmq_env_pwarn 'Both old (.config) and new (.conf) format config files exist.' \ - "Using the old format config file: ${RABBITMQ_CONFIG_FILE_NOEX}.config" \ - 'Please update your config files to the new format and remove the old file.' - fi - RABBITMQ_CONFIG_FILE="${RABBITMQ_CONFIG_FILE_NOEX}.config" - elif [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.conf" ]; then - RABBITMQ_CONFIG_FILE="${RABBITMQ_CONFIG_FILE_NOEX}.conf" - else - if [ -f ${RABBITMQ_ADVANCED_CONFIG_FILE} ]; then - _rmq_env_pwarn "Using RABBITMQ_ADVANCED_CONFIG_FILE: ${RABBITMQ_ADVANCED_CONFIG_FILE}" - fi - # No config file exist. Use advanced config for -config arg. - RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE}" - RABBITMQ_CONFIG_FILE="" - fi -fi - -# Set the -config argument. -# The -config argument should not have extension. -# the file should exist -# the file should be a valid erlang term file - -# Config file extension is .config -if [ "${RABBITMQ_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_CONFIG_FILE}" ]; then - RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_CONFIG_FILE}" -# Config file extension is .conf -elif [ "${RABBITMQ_CONFIG_FILE_NOEX}.conf" = "${RABBITMQ_CONFIG_FILE}" ]; then - RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE}" -elif [ "x" != "x${RABBITMQ_CONFIG_FILE}" \ - -a "${RABBITMQ_CONFIG_FILE_NOEX}" != "${RABBITMQ_CONFIG_FILE}" ]; then - # Config file has an extension, but it's neither .conf or .config - _rmq_env_perr "Wrong extension for RABBITMQ_CONFIG_FILE: ${RABBITMQ_CONFIG_FILE}" \ - 'The extension should be either .conf or .config' - exit 64 # EX_USAGE -fi - -RABBITMQ_CONFIG_ARG_FILE_NOEX=$(get_noex ${RABBITMQ_CONFIG_ARG_FILE}) - -if [ "${RABBITMQ_CONFIG_ARG_FILE_NOEX}.config" != "${RABBITMQ_CONFIG_ARG_FILE}" ]; then - if [ "${RABBITMQ_CONFIG_ARG_FILE}" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" ]; then - _rmq_env_perr "Wrong extension for RABBITMQ_ADVANCED_CONFIG_FILE: ${RABBITMQ_ADVANCED_CONFIG_FILE}" \ - 'The extension should be .config' - exit 64 # EX_USAGE - else - # We should never got here, but still there should be some explanation - _rmq_env_perr "Wrong extension for ${RABBITMQ_CONFIG_ARG_FILE}" - 'The extension should be .config' - exit 64 # EX_USAGE - fi -fi - -# Set -config if the file exists -if [ -f "${RABBITMQ_CONFIG_ARG_FILE}" ]; then - RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_ARG_FILE_NOEX}" -fi - -# Set -conf and other generated config parameters -if [ "${RABBITMQ_CONFIG_FILE_NOEX}.conf" = "${RABBITMQ_CONFIG_FILE}" ]; then - if [ ! -d ${RABBITMQ_SCHEMA_DIR} ]; then - mkdir -p "${RABBITMQ_SCHEMA_DIR}" - fi - - if [ ! -d ${RABBITMQ_GENERATED_CONFIG_DIR} ]; then - mkdir -p "${RABBITMQ_GENERATED_CONFIG_DIR}" - fi - - cp -f "${RABBITMQ_HOME}/priv/schema/rabbit.schema" "${RABBITMQ_SCHEMA_DIR}" - - RABBITMQ_GENERATED_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE} \ - -conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} \ - -conf_script_dir `dirname $0` \ - -conf_schema_dir ${RABBITMQ_SCHEMA_DIR} - -conf_advanced ${RABBITMQ_ADVANCED_CONFIG_FILE}" -fi - -set +e - -# `net_kernel:start/1` will fail in `longnames` mode when erlang is -# unable to determine FQDN of a node (with a dot in it). But `erl` -# itself has some magic that still allow it to start when you -# explicitly specify host (a.la `erl -name test@localhost`). -# -# It's not possible to communicate with this node, unless it's a -# connection initiator. But as prelaunch IS an initiator, it doesn't -# matter what we actually put here. But `localhost` sounds good -# enough. -RABBITMQ_PRELAUNCH_NODENAME="rabbitmqprelaunch${$}@localhost" - -# NOTIFY_SOCKET is needed here to prevent epmd from impersonating the -# success of our startup sequence to systemd. -NOTIFY_SOCKET= \ -RABBITMQ_CONFIG_FILE=$RABBITMQ_CONFIG_FILE \ -ERL_CRASH_DUMP=$ERL_CRASH_DUMP \ -RABBITMQ_CONFIG_ARG_FILE=$RABBITMQ_CONFIG_ARG_FILE \ -RABBITMQ_DIST_PORT=$RABBITMQ_DIST_PORT \ - ${ERL_DIR}erl -pa "$RABBITMQ_EBIN_ROOT" \ - -boot "${CLEAN_BOOT_FILE}" \ - -noinput \ - -hidden \ - -s rabbit_prelaunch \ - ${RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS} \ - ${RABBITMQ_NAME_TYPE} ${RABBITMQ_PRELAUNCH_NODENAME} \ - -conf_advanced "${RABBITMQ_ADVANCED_CONFIG_FILE}" \ - -rabbit feature_flags_file "\"$RABBITMQ_FEATURE_FLAGS_FILE\"" \ - -rabbit enabled_plugins_file "\"$RABBITMQ_ENABLED_PLUGINS_FILE\"" \ - -rabbit plugins_dir "\"$RABBITMQ_PLUGINS_DIR\"" \ - -extra "${RABBITMQ_NODENAME}" - -PRELAUNCH_RESULT=$? -if [ ${PRELAUNCH_RESULT} = 2 ] ; then - # dist port is mentioned in config, so do not set it - true -elif [ ${PRELAUNCH_RESULT} = 0 ] ; then - # dist port is not mentioned in the config file, we can set it - RABBITMQ_DIST_ARG="-kernel inet_dist_listen_min ${RABBITMQ_DIST_PORT} -kernel inet_dist_listen_max ${RABBITMQ_DIST_PORT}" -else - exit ${PRELAUNCH_RESULT} -fi - -# The default allocation strategy RabbitMQ is using was introduced -# in Erlang/OTP 20.2.3. Earlier Erlang versions fail to start with -# this configuration. We therefore need to ensure that erl accepts -# these values before we can use them. -# -# The defaults are meant to reduce RabbitMQ's memory usage and help -# it reclaim memory at the cost of a slight decrease in performance -# (due to an increase in memory operations). These defaults can be -# overridden using the RABBITMQ_SERVER_ERL_ARGS variable. RABBITMQ_DEFAULT_ALLOC_ARGS="+MBas ageffcbf +MHas ageffcbf +MBlmbcs 512 +MHlmbcs 512 +MMmcs 30" -${ERL_DIR}erl ${RABBITMQ_DEFAULT_ALLOC_ARGS} \ - -boot "${CLEAN_BOOT_FILE}" \ - -noinput -eval 'halt(0)' 2>/dev/null - -if [ $? != 0 ] ; then - RABBITMQ_DEFAULT_ALLOC_ARGS= -fi - -set -e - -RABBITMQ_LISTEN_ARG= -[ "x" != "x$RABBITMQ_NODE_PORT" ] && [ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_LISTEN_ARG="-rabbit tcp_listeners [{\""${RABBITMQ_NODE_IP_ADDRESS}"\","${RABBITMQ_NODE_PORT}"}]" - -# If $RABBITMQ_LOGS is '-', send all log messages to stdout. This is -# particularly useful for Docker images. - -if [ "$RABBITMQ_LOGS" = '-' ]; then - SASL_ERROR_LOGGER=tty - RABBIT_LAGER_HANDLER=tty - RABBITMQ_LAGER_HANDLER_UPGRADE=tty -else - SASL_ERROR_LOGGER=false - RABBIT_LAGER_HANDLER='"'${RABBITMQ_LOGS}'"' - RABBITMQ_LAGER_HANDLER_UPGRADE='"'${RABBITMQ_UPGRADE_LOG}'"' -fi - # Bump ETS table limit to 50000 if [ "x" = "x$ERL_MAX_ETS_TABLES" ]; then ERL_MAX_ETS_TABLES=50000 fi -# we need to turn off path expansion because some of the vars, notably -# RABBITMQ_SERVER_ERL_ARGS, contain terms that look like globs and -# there is no other way of preventing their expansion. -set -f - # Lazy initialization of threed pool size - if it wasn't set # explicitly. This parameter is only needed when server is starting, # so it makes no sense to do this calculations in rabbitmq-env or @@ -267,70 +39,16 @@ set -f ensure_thread_pool_size() { if [ -z "${RABBITMQ_IO_THREAD_POOL_SIZE}" ]; then RABBITMQ_IO_THREAD_POOL_SIZE=$( - ${ERL_DIR}erl -pa "$RABBITMQ_EBIN_ROOT" \ - -boot "${CLEAN_BOOT_FILE}" \ - -noinput \ - -s rabbit_misc report_default_thread_pool_size + erl \ + -noinput \ + -boot "${CLEAN_BOOT_FILE}" \ + -s rabbit_misc report_default_thread_pool_size ) fi } -start_rabbitmq_server() { - # The arguments to -pa are in this order because they are *pre*-pended - # to the code path. Since we want RABBITMQ_SERVER_CODE_PATH to precede - # RABBITMQ_EBIN_ROOT, it must come as the second argument here. - # https://github.com/rabbitmq/rabbitmq-server/issues/1777 - ensure_thread_pool_size - check_start_params && - RABBITMQ_CONFIG_FILE=$RABBITMQ_CONFIG_FILE \ - ERL_MAX_ETS_TABLES=$ERL_MAX_ETS_TABLES \ - ERL_CRASH_DUMP=$ERL_CRASH_DUMP \ - exec ${ERL_DIR}erl \ - -pa "$RABBITMQ_EBIN_ROOT" "$RABBITMQ_SERVER_CODE_PATH" \ - ${RABBITMQ_START_RABBIT} \ - ${RABBITMQ_NAME_TYPE} ${RABBITMQ_NODENAME} \ - -boot "${SASL_BOOT_FILE}" \ - ${RABBITMQ_CONFIG_ARG} \ - ${RABBITMQ_GENERATED_CONFIG_ARG} \ - +W w \ - +A ${RABBITMQ_IO_THREAD_POOL_SIZE} \ - ${RABBITMQ_DEFAULT_ALLOC_ARGS} \ - ${RABBITMQ_SERVER_ERL_ARGS} \ - +K true \ - -kernel inet_default_connect_options "[{nodelay,true}]" \ - ${RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS} \ - ${RABBITMQ_LISTEN_ARG} \ - -sasl errlog_type error \ - -sasl sasl_error_logger "$SASL_ERROR_LOGGER" \ - -rabbit lager_log_root "\"$RABBITMQ_LOG_BASE\"" \ - -rabbit lager_default_file "$RABBIT_LAGER_HANDLER" \ - -rabbit lager_upgrade_file "$RABBITMQ_LAGER_HANDLER_UPGRADE" \ - -rabbit feature_flags_file "\"$RABBITMQ_FEATURE_FLAGS_FILE\"" \ - -rabbit enabled_plugins_file "\"$RABBITMQ_ENABLED_PLUGINS_FILE\"" \ - -rabbit plugins_dir "\"$RABBITMQ_PLUGINS_DIR\"" \ - -rabbit plugins_expand_dir "\"$RABBITMQ_PLUGINS_EXPAND_DIR\"" \ - -os_mon start_cpu_sup false \ - -os_mon start_disksup false \ - -os_mon start_memsup false \ - -mnesia dir "\"${RABBITMQ_MNESIA_DIR}\"" \ - -ra data_dir "\"${RABBITMQ_QUORUM_DIR}\"" \ - ${RABBITMQ_SERVER_START_ARGS} \ - ${RABBITMQ_DIST_ARG} \ - "$@" -} - -stop_rabbitmq_server() { - RABBITMQCTL="$(dirname "$0")/rabbitmqctl" - - if ${RABBITMQCTL} -n ${RABBITMQ_NODENAME} status >/dev/null 2>&1; then - ${RABBITMQCTL} -n ${RABBITMQ_NODENAME} stop - fi -} - check_start_params() { check_not_empty RABBITMQ_BOOT_MODULE - check_not_empty RABBITMQ_NAME_TYPE - check_not_empty RABBITMQ_NODENAME check_not_empty SASL_BOOT_FILE check_not_empty RABBITMQ_IO_THREAD_POOL_SIZE } @@ -346,6 +64,61 @@ check_not_empty() { fi } +start_rabbitmq_server() { + set -e + + _rmq_env_set_erl_libs + ensure_thread_pool_size + + RABBITMQ_START_RABBIT= + [ "x" = "x$RABBITMQ_ALLOW_INPUT" ] && RABBITMQ_START_RABBIT=" -noinput" + if test -z "$RABBITMQ_NODE_ONLY"; then + if test "$USE_RABBIT_BOOT_SCRIPT"; then + # TODO: This is experimental and undocumented at this point. + # It is here just to do simple checks while playing with how + # RabbitMQ is started. + "$SCRIPTS_DIR/rabbitmq-rel" gen-boot + SASL_BOOT_FILE=rabbit + test -f "$SASL_BOOT_FILE.boot" + RABBITMQ_START_RABBIT="$RABBITMQ_START_RABBIT -init_debug" + else + RABBITMQ_START_RABBIT="$RABBITMQ_START_RABBIT -s $RABBITMQ_BOOT_MODULE boot" + fi + fi + + # We need to turn off path expansion because some of the vars, + # notably RABBITMQ_SERVER_ERL_ARGS, contain terms that look like + # globs and there is no other way of preventing their expansion. + set -f + + export ERL_MAX_ETS_TABLES \ + SYS_PREFIX + + check_start_params + + exec erl \ + -pa "$RABBITMQ_SERVER_CODE_PATH" \ + ${RABBITMQ_START_RABBIT} \ + -boot "${SASL_BOOT_FILE}" \ + +W w \ + +K true \ + +A ${RABBITMQ_IO_THREAD_POOL_SIZE} \ + ${RABBITMQ_DEFAULT_ALLOC_ARGS} \ + ${RABBITMQ_SERVER_ERL_ARGS} \ + ${RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS} \ + ${RABBITMQ_SERVER_START_ARGS} \ + -lager crash_log false \ + -lager handlers '[]' \ + "$@" +} + +stop_rabbitmq_server() { + if test "$rabbitmq_server_pid"; then + kill -TERM "$rabbitmq_server_pid" + wait "$rabbitmq_server_pid" || true + fi +} + if [ "$RABBITMQ_ALLOW_INPUT" -o "$RUNNING_UNDER_SYSTEMD" -o "$detached" ]; then # Run erlang VM directly, completely replacing current shell # process - so the pid file written in the code above will be @@ -381,7 +154,7 @@ else trap "stop_rabbitmq_server; exit 130" INT start_rabbitmq_server "$@" & - rabbitmq_server_pid=$! + export rabbitmq_server_pid=$! # Block until RabbitMQ exits or a signal is caught. # Waits for last command (which is start_rabbitmq_server) @@ -399,5 +172,5 @@ else # force that statement to succeed and the signal handler to properly # execute. Because the statement below has an exit code of 0, the # signal handler has to restate the expected exit code. - wait $rabbitmq_server_pid || true + wait "$rabbitmq_server_pid" || true fi diff --git a/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat index 7d4d1b486f..57cbdf9392 100644 --- a/scripts/rabbitmq-server.bat +++ b/scripts/rabbitmq-server.bat @@ -46,163 +46,8 @@ if not exist "!ERLANG_HOME!\bin\erl.exe" ( exit /B 1
)
-set RABBITMQ_EBIN_ROOT=!RABBITMQ_HOME!\ebin
-
-CALL :convert_forward_slashes "!RABBITMQ_ADVANCED_CONFIG_FILE!" RABBITMQ_ADVANCED_CONFIG_FILE
-CALL :get_noex "!RABBITMQ_ADVANCED_CONFIG_FILE!" RABBITMQ_ADVANCED_CONFIG_FILE_NOEX
-
-if "!RABBITMQ_ADVANCED_CONFIG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!" (
- set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!.config
- REM Try to create advanced config file, if it doesn't exist
- REM It still can fail to be created, but at least not for default install
- if not exist "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo []. > !RABBITMQ_ADVANCED_CONFIG_FILE!
- )
-)
-
-CALL :convert_forward_slashes "!RABBITMQ_CONFIG_FILE!" RABBITMQ_CONFIG_FILE
-CALL :get_noex "!RABBITMQ_CONFIG_FILE!" RABBITMQ_CONFIG_FILE_NOEX
-
-if "!RABBITMQ_CONFIG_FILE!" == "!RABBITMQ_CONFIG_FILE_NOEX!" (
- if exist "!RABBITMQ_CONFIG_FILE_NOEX!.config" (
- if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
- rem Both files exist. Print a warning
- echo "WARNING: Both old (.config) and new (.conf) format config files exist."
- echo "WARNING: Using the old format config file: !RABBITMQ_CONFIG_FILE_NOEX!.config"
- echo "WARNING: Please update your config files to the new format and remove the old file"
- )
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.config
- ) else if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.conf
- ) else (
- rem No config file exist. Use advanced config for -config arg.
- if exist "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo "WARNING: Using RABBITMQ_ADVANCED_CONFIG_FILE: !RABBITMQ_ADVANCED_CONFIG_FILE!"
- )
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE!
- )
-)
-
-rem Set the -config argument.
-rem The -config argument should not have extension.
-rem the file should exist
-rem the file should be a valid erlang term file
-
-rem Config file extension is .config
-if "!RABBITMQ_CONFIG_FILE_NOEX!.config" == "!RABBITMQ_CONFIG_FILE!" (
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_CONFIG_FILE!
-) else if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE!" (
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE!
-) else if not "" == "!RABBITMQ_CONFIG_FILE!" (
- if not "!RABBITMQ_CONFIG_FILE_NOEX!" == "!RABBITMQ_CONFIG_FILE!" (
- rem Config file has an extension, but it's neither .conf or .config
- echo "ERROR: Wrong extension for RABBITMQ_CONFIG_FILE: !RABBITMQ_CONFIG_FILE!"
- echo "ERROR: extension should be either .conf or .config"
- exit /B 1
- )
-)
-
-CALL :convert_forward_slashes "!RABBITMQ_CONFIG_ARG_FILE!" RABBITMQ_CONFIG_ARG_FILE
-CALL :get_noex "!RABBITMQ_CONFIG_ARG_FILE!" RABBITMQ_CONFIG_ARG_FILE_NOEX
-
-if not "!RABBITMQ_CONFIG_ARG_FILE_NOEX!.config" == "!RABBITMQ_CONFIG_ARG_FILE!" (
- if "!RABBITMQ_CONFIG_ARG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo "ERROR: Wrong extension for RABBITMQ_ADVANCED_CONFIG_FILE: !RABBITMQ_ADVANCED_CONFIG_FILE!"
- echo "ERROR: extension should be .config"
- exit /B 1
- ) else (
- rem We should never got here, but still there should be some explanation
- echo "ERROR: Wrong extension for !RABBITMQ_CONFIG_ARG_FILE!"
- echo "ERROR: extension should be .config"
- exit /B 1
- )
-)
-
-rem Set -config if the file exists
-if exist !RABBITMQ_CONFIG_ARG_FILE! (
- set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_ARG_FILE_NOEX!"
-)
-
-rem Set -conf and other generated config parameters
-if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE!" (
- if not exist "!RABBITMQ_SCHEMA_DIR!" (
- mkdir "!RABBITMQ_SCHEMA_DIR!"
- )
-
- if not exist "!RABBITMQ_GENERATED_CONFIG_DIR!" (
- mkdir "!RABBITMQ_GENERATED_CONFIG_DIR!"
- )
-
- copy /Y "!RABBITMQ_HOME!\priv\schema\rabbit.schema" "!RABBITMQ_SCHEMA_DIR!\rabbit.schema"
-
- set RABBITMQ_GENERATED_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE:\=/!" ^
- -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR:\=/!" ^
- -conf_script_dir "!CONF_SCRIPT_DIR:\=/!" ^
- -conf_schema_dir "!RABBITMQ_SCHEMA_DIR:\=/!" ^
- -conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE:\=/!"
-)
-
-"!ERLANG_HOME!\bin\erl.exe" ^
- -pa "!RABBITMQ_EBIN_ROOT:\=/!" ^
- -boot !CLEAN_BOOT_FILE! ^
- -noinput -hidden ^
- -s rabbit_prelaunch ^
- !RABBITMQ_NAME_TYPE! rabbitmqprelaunch!RANDOM!!TIME:~9!@localhost ^
- -conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!" ^
- -rabbit feature_flags_file "!RABBITMQ_FEATURE_FLAGS_FILE!" ^
- -rabbit enabled_plugins_file "!RABBITMQ_ENABLED_PLUGINS_FILE!" ^
- -rabbit plugins_dir "!RABBITMQ_PLUGINS_DIR!" ^
- -extra "!RABBITMQ_NODENAME!"
-
-if ERRORLEVEL 2 (
- rem dist port mentioned in config, do not attempt to set it
-) else if ERRORLEVEL 1 (
- exit /B 1
-) else (
- set RABBITMQ_DIST_ARG=-kernel inet_dist_listen_min !RABBITMQ_DIST_PORT! -kernel inet_dist_listen_max !RABBITMQ_DIST_PORT!
-)
-
-rem The default allocation strategy RabbitMQ is using was introduced
-rem in Erlang/OTP 20.2.3. Earlier Erlang versions fail to start with
-rem this configuration. We therefore need to ensure that erl accepts
-rem these values before we can use them.
-rem
-rem The defaults are meant to reduce RabbitMQ's memory usage and help
-rem it reclaim memory at the cost of a slight decrease in performance
-rem (due to an increase in memory operations). These defaults can be
-rem overridden using the RABBITMQ_SERVER_ERL_ARGS variable.
-
set RABBITMQ_DEFAULT_ALLOC_ARGS=+MBas ageffcbf +MHas ageffcbf +MBlmbcs 512 +MHlmbcs 512 +MMmcs 30
-"!ERLANG_HOME!\bin\erl.exe" ^
- !RABBITMQ_DEFAULT_ALLOC_ARGS! ^
- -boot !CLEAN_BOOT_FILE! ^
- -noinput -eval "halt(0)"
-
-if ERRORLEVEL 1 (
- set RABBITMQ_DEFAULT_ALLOC_ARGS=
-)
-
-set RABBITMQ_LISTEN_ARG=
-if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_LISTEN_ARG=-rabbit tcp_listeners [{"\"!RABBITMQ_NODE_IP_ADDRESS!\"","!RABBITMQ_NODE_PORT!"}]
- )
-)
-
-REM If !RABBITMQ_LOGS! is '-', send all log messages to stdout. This is
-REM particularly useful for Docker images.
-
-if "!RABBITMQ_LOGS!" == "-" (
- set SASL_ERROR_LOGGER=tty
- set RABBIT_LAGER_HANDLER=tty
- set RABBITMQ_LAGER_HANDLER_UPGRADE=tty
-) else (
- set SASL_ERROR_LOGGER=false
- set RABBIT_LAGER_HANDLER="\"!RABBITMQ_LOGS:\=/!\""
- set RABBITMQ_LAGER_HANDLER_UPGRADE="\"!RABBITMQ_UPGRADE_LOG:\=/!\""
-)
-
set RABBITMQ_START_RABBIT=
if "!RABBITMQ_ALLOW_INPUT!"=="" (
set RABBITMQ_START_RABBIT=!RABBITMQ_START_RABBIT! -noinput
@@ -217,9 +62,6 @@ if "!RABBITMQ_IO_THREAD_POOL_SIZE!"=="" ( set ENV_OK=true
CALL :check_not_empty "RABBITMQ_BOOT_MODULE" !RABBITMQ_BOOT_MODULE!
-CALL :check_not_empty "RABBITMQ_NAME_TYPE" !RABBITMQ_NAME_TYPE!
-CALL :check_not_empty "RABBITMQ_NODENAME" !RABBITMQ_NODENAME!
-
if "!ENV_OK!"=="false" (
EXIT /b 78
@@ -232,35 +74,16 @@ if "!RABBITMQ_ALLOW_INPUT!"=="" ( )
"!ERLANG_HOME!\bin\!ERL_CMD!" ^
--pa "!RABBITMQ_EBIN_ROOT:\=/!" ^
--boot start_sasl ^
!RABBITMQ_START_RABBIT! ^
-!RABBITMQ_CONFIG_ARG! ^
-!RABBITMQ_GENERATED_CONFIG_ARG! ^
-!RABBITMQ_NAME_TYPE! !RABBITMQ_NODENAME! ^
+-boot "!SASL_BOOT_FILE!" ^
+W w ^
+A "!RABBITMQ_IO_THREAD_POOL_SIZE!" ^
!RABBITMQ_DEFAULT_ALLOC_ARGS! ^
!RABBITMQ_SERVER_ERL_ARGS! ^
-!RABBITMQ_LISTEN_ARG! ^
--kernel inet_default_connect_options "[{nodelay, true}]" ^
!RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS! ^
--sasl errlog_type error ^
--sasl sasl_error_logger !SASL_ERROR_LOGGER! ^
--rabbit lager_log_root "\"!RABBITMQ_LOG_BASE:\=/!\"" ^
--rabbit lager_default_file !RABBIT_LAGER_HANDLER! ^
--rabbit lager_upgrade_file !RABBITMQ_LAGER_HANDLER_UPGRADE! ^
--rabbit feature_flags_file "\"!RABBITMQ_FEATURE_FLAGS_FILE:\=/!\"" ^
--rabbit enabled_plugins_file "\"!RABBITMQ_ENABLED_PLUGINS_FILE:\=/!\"" ^
--rabbit plugins_dir "\"!RABBITMQ_PLUGINS_DIR:\=/!\"" ^
--rabbit plugins_expand_dir "\"!RABBITMQ_PLUGINS_EXPAND_DIR:\=/!\"" ^
--mnesia dir "\"!RABBITMQ_MNESIA_DIR:\=/!\"" ^
--os_mon start_cpu_sup false ^
--os_mon start_disksup false ^
--os_mon start_memsup false ^
--ra data_dir \""!RABBITMQ_QUORUM_DIR:\=/!"\" ^
!RABBITMQ_SERVER_START_ARGS! ^
-!RABBITMQ_DIST_ARG! ^
+-lager crash_log false ^
+-lager handlers "[]" ^
!STAR!
if ERRORLEVEL 1 (
@@ -277,17 +100,6 @@ if "%~2"=="" ( )
EXIT /B 0
-:get_noex
-set "%~2=%~dpn1"
-EXIT /B 0
-
-rem Convert unix style path separators into windows style path separators
-rem needed for comparing with _NOEX variables
-rem rabbitmq/rabbitmq-server#1962
-:convert_forward_slashes
-set "%~2=%~dpf1"
-EXIT /B 0
-
endlocal
endlocal
endlocal
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat index fe9884abf0..e9ee0ea74b 100644 --- a/scripts/rabbitmq-service.bat +++ b/scripts/rabbitmq-service.bat @@ -35,6 +35,38 @@ REM Get default settings with user overrides for (RABBITMQ_)<var_name> REM Non-empty defaults should be set in rabbitmq-env
call "%TDP0%\rabbitmq-env.bat" %~n0
+REM Check for the short names here too
+if "!RABBITMQ_USE_LONGNAME!"=="true" (
+ set RABBITMQ_NAME_TYPE=-name
+ set NAMETYPE=longnames
+) else (
+ if "!USE_LONGNAME!"=="true" (
+ set RABBITMQ_USE_LONGNAME=true
+ set RABBITMQ_NAME_TYPE=-name
+ set NAMETYPE=longnames
+ ) else (
+ set RABBITMQ_USE_LONGNAME=false
+ set RABBITMQ_NAME_TYPE=-sname
+ set NAMETYPE=shortnames
+ )
+)
+
+REM [ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME}
+if "!RABBITMQ_NODENAME!"=="" (
+ if "!NODENAME!"=="" (
+ REM We use Erlang to query the local hostname because
+ REM !COMPUTERNAME! and Erlang may return different results.
+ REM Start erl with -sname to make sure epmd is started.
+ call "%ERLANG_HOME%\bin\erl.exe" -A0 -noinput -boot start_clean -sname rabbit-prelaunch-epmd -eval "init:stop()." >nul 2>&1
+ for /f "delims=" %%F in ('call "%ERLANG_HOME%\bin\erl.exe" -A0 -noinput -boot start_clean -eval "net_kernel:start([list_to_atom(""rabbit-gethostname-"" ++ os:getpid()), %NAMETYPE%]), [_, H] = string:tokens(atom_to_list(node()), ""@""), io:format(""~s~n"", [H]), init:stop()."') do @set HOSTNAME=%%F
+ set RABBITMQ_NODENAME=rabbit@!HOSTNAME!
+ set HOSTNAME=
+ ) else (
+ set RABBITMQ_NODENAME=!NODENAME!
+ )
+)
+set NAMETYPE=
+
set STARVAR=
shift
:loop1
@@ -112,16 +144,6 @@ if not exist "!RABBITMQ_BASE!" ( echo Creating base directory !RABBITMQ_BASE! & mkdir "!RABBITMQ_BASE!"
)
-set ENV_OK=true
-CALL :check_not_empty "RABBITMQ_BOOT_MODULE" !RABBITMQ_BOOT_MODULE!
-CALL :check_not_empty "RABBITMQ_NAME_TYPE" !RABBITMQ_NAME_TYPE!
-CALL :check_not_empty "RABBITMQ_NODENAME" !RABBITMQ_NODENAME!
-
-
-if "!ENV_OK!"=="false" (
- EXIT /b 78
-)
-
"!ERLANG_SERVICE_MANAGER_PATH!\erlsrv" list !RABBITMQ_SERVICENAME! 2>NUL 1>NUL
if errorlevel 1 (
"!ERLANG_SERVICE_MANAGER_PATH!\erlsrv" add !RABBITMQ_SERVICENAME! -internalservicename !RABBITMQ_SERVICENAME!
@@ -129,165 +151,8 @@ if errorlevel 1 ( echo !RABBITMQ_SERVICENAME! service is already present - only updating service parameters
)
-set RABBITMQ_EBIN_ROOT=!RABBITMQ_HOME!\ebin
-
-CALL :convert_forward_slashes "!RABBITMQ_ADVANCED_CONFIG_FILE!" RABBITMQ_ADVANCED_CONFIG_FILE
-CALL :get_noex "!RABBITMQ_ADVANCED_CONFIG_FILE!" RABBITMQ_ADVANCED_CONFIG_FILE_NOEX
-
-if "!RABBITMQ_ADVANCED_CONFIG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!" (
- set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!.config
- REM Try to create advanced config file, if it doesn't exist
- REM It still can fail to be created, but at least not for default install
- if not exist "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo []. > !RABBITMQ_ADVANCED_CONFIG_FILE!
- )
-)
-
-CALL :convert_forward_slashes "!RABBITMQ_CONFIG_FILE!" RABBITMQ_CONFIG_FILE
-CALL :get_noex "!RABBITMQ_CONFIG_FILE!" RABBITMQ_CONFIG_FILE_NOEX
-
-if "!RABBITMQ_CONFIG_FILE!" == "!RABBITMQ_CONFIG_FILE_NOEX!" (
- if exist "!RABBITMQ_CONFIG_FILE_NOEX!.config" (
- if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
- rem Both files exist. Print a warning
- echo "WARNING: Both old (.config) and new (.conf) format config files exist."
- echo "WARNING: Using the old format config file: !RABBITMQ_CONFIG_FILE_NOEX!.config"
- echo "WARNING: Please update your config files to the new format and remove the old file"
- )
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.config
- ) else if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
- set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.conf
- ) else (
- rem No config file exist. Use advanced config for -config arg.
- if exist "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo "WARNING: Using RABBITMQ_ADVANCED_CONFIG_FILE: !RABBITMQ_ADVANCED_CONFIG_FILE!"
- )
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE!
- )
-)
-
-rem Set the -config argument.
-rem The -config argument should not have extension.
-rem the file should exist
-rem the file should be a valid erlang term file
-
-rem Config file extension is .config
-if "!RABBITMQ_CONFIG_FILE_NOEX!.config" == "!RABBITMQ_CONFIG_FILE!" (
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_CONFIG_FILE!
-) else if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE!" (
- set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE!
-) else if not "" == "!RABBITMQ_CONFIG_FILE!" (
- if not "!RABBITMQ_CONFIG_FILE_NOEX!" == "!RABBITMQ_CONFIG_FILE!" (
- rem Config file has an extension, but it's neither .conf or .config
- echo "ERROR: Wrong extension for RABBITMQ_CONFIG_FILE: !RABBITMQ_CONFIG_FILE!"
- echo "ERROR: extension should be either .conf or .config"
- exit /B 1
- )
-)
-
-CALL :convert_forward_slashes "!RABBITMQ_CONFIG_ARG_FILE!" RABBITMQ_CONFIG_ARG_FILE
-CALL :get_noex "!RABBITMQ_CONFIG_ARG_FILE!" RABBITMQ_CONFIG_ARG_FILE_NOEX
-
-if not "!RABBITMQ_CONFIG_ARG_FILE_NOEX!.config" == "!RABBITMQ_CONFIG_ARG_FILE!" (
- if "!RABBITMQ_CONFIG_ARG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
- echo "ERROR: Wrong extension for RABBITMQ_ADVANCED_CONFIG_FILE: !RABBITMQ_ADVANCED_CONFIG_FILE!"
- echo "ERROR: extension should be .config"
- exit /B 1
- ) else (
- rem We should never got here, but still there should be some explanation
- echo "ERROR: Wrong extension for !RABBITMQ_CONFIG_ARG_FILE!"
- echo "ERROR: extension should be .config"
- exit /B 1
- )
-)
-
-rem Set -config if the file exists
-if exist !RABBITMQ_CONFIG_ARG_FILE! (
- set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_ARG_FILE_NOEX!"
-)
-
-rem Set -conf and other generated config parameters
-if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE!" (
- if not exist "!RABBITMQ_SCHEMA_DIR!" (
- mkdir "!RABBITMQ_SCHEMA_DIR!"
- )
-
- if not exist "!RABBITMQ_GENERATED_CONFIG_DIR!" (
- mkdir "!RABBITMQ_GENERATED_CONFIG_DIR!"
- )
-
- copy /Y "!RABBITMQ_HOME!\priv\schema\rabbit.schema" "!RABBITMQ_SCHEMA_DIR!\rabbit.schema"
-
- set RABBITMQ_GENERATED_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE:\=/!" ^
- -conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR:\=/!" ^
- -conf_script_dir "!CONF_SCRIPT_DIR:\=/!" ^
- -conf_schema_dir "!RABBITMQ_SCHEMA_DIR:\=/!" ^
- -conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE:\=/!"
-)
-
-"!ERLANG_HOME!\bin\erl.exe" ^
- -pa "!RABBITMQ_EBIN_ROOT:\=/!" ^
- -boot !CLEAN_BOOT_FILE! ^
- -noinput -hidden ^
- -s rabbit_prelaunch ^
- !RABBITMQ_NAME_TYPE! rabbitmqprelaunch!RANDOM!!TIME:~9!@localhost ^
- -conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!" ^
- -rabbit feature_flags_file "!RABBITMQ_FEATURE_FLAGS_FILE!" ^
- -rabbit enabled_plugins_file "!RABBITMQ_ENABLED_PLUGINS_FILE!" ^
- -rabbit plugins_dir "!RABBITMQ_PLUGINS_DIR!" ^
- -extra "!RABBITMQ_NODENAME!"
-
-if ERRORLEVEL 3 (
- rem ERRORLEVEL means (or greater) so we need to catch all other failure
- rem cases here
- exit /B 1
-) else if ERRORLEVEL 2 (
- rem dist port mentioned in config, do not attempt to set it
-) else if ERRORLEVEL 1 (
- exit /B 1
-) else (
- set RABBITMQ_DIST_ARG=-kernel inet_dist_listen_min !RABBITMQ_DIST_PORT! -kernel inet_dist_listen_max !RABBITMQ_DIST_PORT!
-)
-
-rem The default allocation strategy RabbitMQ is using was introduced
-rem in Erlang/OTP 20.2.3. Earlier Erlang versions fail to start with
-rem this configuration. We therefore need to ensure that erl accepts
-rem these values before we can use them.
-rem
-rem The defaults are meant to reduce RabbitMQ's memory usage and help
-rem it reclaim memory at the cost of a slight decrease in performance
-rem (due to an increase in memory operations). These defaults can be
-rem overridden using the RABBITMQ_SERVER_ERL_ARGS variable.
-
set RABBITMQ_DEFAULT_ALLOC_ARGS=+MBas ageffcbf +MHas ageffcbf +MBlmbcs 512 +MHlmbcs 512 +MMmcs 30
-"!ERLANG_HOME!\bin\erl.exe" ^
- !RABBITMQ_DEFAULT_ALLOC_ARGS! ^
- -boot !CLEAN_BOOT_FILE! ^
- -noinput -eval "halt(0)"
-
-if ERRORLEVEL 1 (
- set RABBITMQ_DEFAULT_ALLOC_ARGS=
-)
-
-
-set RABBITMQ_LISTEN_ARG=
-if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
- if not "!RABBITMQ_NODE_PORT!"=="" (
- set RABBITMQ_LISTEN_ARG=-rabbit tcp_listeners "[{\"!RABBITMQ_NODE_IP_ADDRESS!\", !RABBITMQ_NODE_PORT!}]"
- )
-)
-
-if "!RABBITMQ_LOGS!" == "-" (
- set SASL_ERROR_LOGGER=tty
- set RABBIT_LAGER_HANDLER=tty
- set RABBITMQ_LAGER_HANDLER_UPGRADE=tty
-) else (
- set SASL_ERROR_LOGGER=false
- set RABBIT_LAGER_HANDLER="\"!RABBITMQ_LOGS:\=/!\""
- set RABBITMQ_LAGER_HANDLER_UPGRADE="\"!RABBITMQ_UPGRADE_LOG:\=/!\""
-)
-
set RABBITMQ_START_RABBIT=
if "!RABBITMQ_NODE_ONLY!"=="" (
set RABBITMQ_START_RABBIT=-s "!RABBITMQ_BOOT_MODULE!" boot
@@ -301,45 +166,46 @@ if "!RABBITMQ_SERVICE_RESTART!"=="" ( set RABBITMQ_SERVICE_RESTART=restart
)
+set ENV_OK=true
+CALL :check_not_empty "RABBITMQ_BOOT_MODULE" !RABBITMQ_BOOT_MODULE!
+CALL :check_not_empty "RABBITMQ_NAME_TYPE" !RABBITMQ_NAME_TYPE!
+CALL :check_not_empty "RABBITMQ_NODENAME" !RABBITMQ_NODENAME!
+
+if "!ENV_OK!"=="false" (
+ EXIT /b 78
+)
+
set ERLANG_SERVICE_ARGUMENTS= ^
--pa "!RABBITMQ_EBIN_ROOT:\=/!" ^
--boot start_sasl ^
!RABBITMQ_START_RABBIT! ^
-!RABBITMQ_CONFIG_ARG! ^
-!RABBITMQ_GENERATED_CONFIG_ARG! ^
+-boot "!SASL_BOOT_FILE!" ^
+W w ^
+A "!RABBITMQ_IO_THREAD_POOL_SIZE!" ^
!RABBITMQ_DEFAULT_ALLOC_ARGS! ^
!RABBITMQ_SERVER_ERL_ARGS! ^
-!RABBITMQ_LISTEN_ARG! ^
--kernel inet_default_connect_options "[{nodelay,true}]" ^
!RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS! ^
--sasl errlog_type error ^
--sasl sasl_error_logger false ^
--rabbit lager_log_root "\"!RABBITMQ_LOG_BASE:\=/!\"" ^
--rabbit lager_default_file !RABBIT_LAGER_HANDLER! ^
--rabbit lager_upgrade_file !RABBITMQ_LAGER_HANDLER_UPGRADE! ^
--rabbit feature_flags_file "\"!RABBITMQ_FEATURE_FLAGS_FILE:\=/!\"" ^
--rabbit enabled_plugins_file "\"!RABBITMQ_ENABLED_PLUGINS_FILE:\=/!\"" ^
--rabbit plugins_dir "\"!RABBITMQ_PLUGINS_DIR:\=/!\"" ^
--rabbit plugins_expand_dir "\"!RABBITMQ_PLUGINS_EXPAND_DIR:\=/!\"" ^
--rabbit windows_service_config "\"!RABBITMQ_CONFIG_FILE:\=/!\"" ^
--mnesia dir "\"!RABBITMQ_MNESIA_DIR:\=/!\"" ^
--os_mon start_cpu_sup false ^
--os_mon start_disksup false ^
--os_mon start_memsup false ^
--ra data_dir \""!RABBITMQ_QUORUM_DIR:\=/!"\" ^
!RABBITMQ_SERVER_START_ARGS! ^
-!RABBITMQ_DIST_ARG! ^
+-lager crash_log false ^
+-lager handlers "[]" ^
!STARVAR!
set ERLANG_SERVICE_ARGUMENTS=!ERLANG_SERVICE_ARGUMENTS:\=\\!
set ERLANG_SERVICE_ARGUMENTS=!ERLANG_SERVICE_ARGUMENTS:"=\"!
+rem We resolve %APPDATA% at install time so that the user's %APPDATA%
+rem is passed to `rabbit_env` at runtime (instead of the service's
+rem %APPDAT%).
+rem
+rem The goal is to keep the same behavior as when RabbitMQ data
+rem locations were decided in `rabbitmq-env.bat` (sourced by this
+rem script), even if now, we compute everything in `rabbit_env` at
+rem runtime.
+rem
+rem We may revisit this in the future so that no data is stored in a
+rem user-specific directory.
"!ERLANG_SERVICE_MANAGER_PATH!\erlsrv" set !RABBITMQ_SERVICENAME! ^
-onfail !RABBITMQ_SERVICE_RESTART! ^
-machine "!ERLANG_SERVICE_MANAGER_PATH!\erl.exe" ^
--env ERL_CRASH_DUMP="!RABBITMQ_BASE:\=/!/erl_crash.dump" ^
+-env APPDATA="!APPDATA!" ^
-env ERL_LIBS="!ERL_LIBS!" ^
-env ERL_MAX_ETS_TABLES="!ERL_MAX_ETS_TABLES!" ^
-env ERL_MAX_PORTS="!ERL_MAX_PORTS!" ^
@@ -386,17 +252,6 @@ if "%~2"=="" ( )
EXIT /B 0
-:get_noex
-set "%~2=%~dpn1"
-EXIT /B 0
-
-rem Convert unix style path separators into windows style path separators
-rem needed for comparing with _NOEX variables
-rem rabbitmq/rabbitmq-server#1962
-:convert_forward_slashes
-set "%~2=%~dpf1"
-EXIT /B 0
-
endlocal
endlocal
endlocal
diff --git a/scripts/rabbitmq-upgrade.bat b/scripts/rabbitmq-upgrade.bat index 921150b26b..0b9c42cc8f 100644 --- a/scripts/rabbitmq-upgrade.bat +++ b/scripts/rabbitmq-upgrade.bat @@ -49,11 +49,6 @@ if not defined ERL_CRASH_DUMP_SECONDS ( -boot !CLEAN_BOOT_FILE! ^ -noinput -noshell -hidden -smp enable ^ !RABBITMQ_CTL_ERL_ARGS! ^ --kernel inet_dist_listen_min !RABBITMQ_CTL_DIST_PORT_MIN! ^ --kernel inet_dist_listen_max !RABBITMQ_CTL_DIST_PORT_MAX! ^ --sasl errlog_type error ^ --mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^ --nodename !RABBITMQ_NODENAME! ^ -run escript start ^ -escript main rabbitmqctl_escript ^ -extra "%RABBITMQ_HOME%\escript\rabbitmq-upgrade" !STAR! @@ -62,5 +57,6 @@ if ERRORLEVEL 1 ( exit /B %ERRORLEVEL% ) -endlocal +EXIT /B 0 + endlocal diff --git a/scripts/rabbitmqctl.bat b/scripts/rabbitmqctl.bat index 08c1433154..4d9ea8d908 100644 --- a/scripts/rabbitmqctl.bat +++ b/scripts/rabbitmqctl.bat @@ -49,10 +49,6 @@ if not defined ERL_CRASH_DUMP_SECONDS ( -boot !CLEAN_BOOT_FILE! ^
-noinput -noshell -hidden -smp enable ^
!RABBITMQ_CTL_ERL_ARGS! ^
--kernel inet_dist_listen_min !RABBITMQ_CTL_DIST_PORT_MIN! ^
--kernel inet_dist_listen_max !RABBITMQ_CTL_DIST_PORT_MAX! ^
--sasl errlog_type error ^
--mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^
-run escript start ^
-escript main rabbitmqctl_escript ^
-extra "%RABBITMQ_HOME%\escript\rabbitmqctl" !STAR!
@@ -61,5 +57,7 @@ if ERRORLEVEL 1 ( exit /B %ERRORLEVEL%
)
+EXIT /B 0
+
endlocal
endlocal
|
