summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/cuttlefishbin508786 -> 0 bytes
-rwxr-xr-xscripts/rabbitmq-defaults37
-rw-r--r--scripts/rabbitmq-defaults.bat37
-rw-r--r--scripts/rabbitmq-diagnostics.bat6
-rwxr-xr-xscripts/rabbitmq-env287
-rw-r--r--scripts/rabbitmq-env.bat374
-rw-r--r--scripts/rabbitmq-plugins.bat6
-rw-r--r--scripts/rabbitmq-queues.bat7
-rwxr-xr-xscripts/rabbitmq-rel58
-rwxr-xr-xscripts/rabbitmq-server355
-rw-r--r--scripts/rabbitmq-server.bat194
-rw-r--r--scripts/rabbitmq-service.bat257
-rw-r--r--scripts/rabbitmq-upgrade.bat8
-rw-r--r--scripts/rabbitmqctl.bat6
14 files changed, 219 insertions, 1413 deletions
diff --git a/scripts/cuttlefish b/scripts/cuttlefish
deleted file mode 100755
index e63ac1c1b3..0000000000
--- a/scripts/cuttlefish
+++ /dev/null
Binary files differ
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