diff options
| -rw-r--r-- | scripts/rabbitmq-defaults.bat | 10 | ||||
| -rw-r--r-- | scripts/rabbitmq-env.bat | 96 | ||||
| -rw-r--r-- | scripts/rabbitmq-plugins.bat | 2 | ||||
| -rw-r--r-- | scripts/rabbitmq-server.bat | 19 | ||||
| -rw-r--r-- | scripts/rabbitmq-service.bat | 2 | ||||
| -rw-r--r-- | scripts/rabbitmqctl.bat | 2 | ||||
| -rw-r--r-- | src/rabbit_mirror_queue_slave.erl | 1 |
7 files changed, 108 insertions, 24 deletions
diff --git a/scripts/rabbitmq-defaults.bat b/scripts/rabbitmq-defaults.bat index 2125af68f1..27edd0d11e 100644 --- a/scripts/rabbitmq-defaults.bat +++ b/scripts/rabbitmq-defaults.bat @@ -23,6 +23,14 @@ if "!RABBITMQ_BASE!"=="" ( set RABBITMQ_BASE=!APPDATA!\RabbitMQ
)
+REM Make sure $RABBITMQ_BASE contains no non-ASCII characters. We create
+REM the directory first so we don't end up creating it later in its "short
+REM filename" version.
+if not exist "!RABBITMQ_BASE!" (
+ mkdir "!RABBITMQ_BASE!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_BASE!") do set RABBITMQ_BASE=%%~sF
+
REM BOOT_MODULE="rabbit"
REM CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq
REM LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
@@ -35,7 +43,7 @@ set MNESIA_BASE=!RABBITMQ_BASE!\db set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
-set PLUGINS_DIR=!TDP0!..\plugins
+for /f "delims=" %%F in ("!TDP0!..\plugins") do set PLUGINS_DIR=%%~dpsF%%~nF%%~xF
REM CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
if "!RABBITMQ_CONF_ENV_FILE!"=="" (
diff --git a/scripts/rabbitmq-env.bat b/scripts/rabbitmq-env.bat index 036665b31d..d402438fb5 100644 --- a/scripts/rabbitmq-env.bat +++ b/scripts/rabbitmq-env.bat @@ -12,7 +12,7 @@ REM SCRIPT_DIR=`dirname $SCRIPT_PATH` REM RABBITMQ_HOME="${SCRIPT_DIR}/.."
set SCRIPT_DIR=%TDP0%
set SCRIPT_NAME=%1
-set RABBITMQ_HOME=%SCRIPT_DIR%..
+for /f "delims=" %%F in ("%SCRIPT_DIR%..") do set RABBITMQ_HOME=%%~dpsF%%~nF%%~xF
REM If ERLANG_HOME is not defined, check if "erl.exe" is available in
REM the path and use that.
@@ -20,7 +20,7 @@ if not defined ERLANG_HOME ( for /f "delims=" %%F in ('where.exe erl.exe') do @set ERL_PATH=%%F
if exist "!ERL_PATH!" (
for /f "delims=" %%F in ("!ERL_PATH!") do set ERL_DIRNAME=%%~dpF
- for /f "delims=" %%F in ('realpath "!ERL_DIRNAME!\.."') do @set ERLANG_HOME=%%F
+ for /f "delims=" %%F in ("!ERL_DIRNAME!\..") do @set ERLANG_HOME=%%~dpsF%%~nF%%~xF
)
set ERL_PATH=
set ERL_DIRNAME=
@@ -51,6 +51,12 @@ if exist "!RABBITMQ_CONF_ENV_FILE!" ( call "!RABBITMQ_CONF_ENV_FILE!"
)
+REM Make sure $RABBITMQ_BASE contains no non-ASCII characters.
+if not exist "!RABBITMQ_BASE!" (
+ mkdir "!RABBITMQ_BASE!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_BASE!") do set RABBITMQ_BASE=%%~sF
+
REM Check for the short names here too
if "!RABBITMQ_USE_LONGNAME!"=="" (
if "!USE_LONGNAME!"=="" (
@@ -158,6 +164,10 @@ if "!RABBITMQ_LOG_BASE!"=="" ( set RABBITMQ_LOG_BASE=!LOG_BASE!
)
)
+if not exist "!RABBITMQ_LOG_BASE!" (
+ mkdir "!RABBITMQ_LOG_BASE!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_LOG_BASE!") do set RABBITMQ_LOG_BASE=%%~sF
REM [ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE}
if "!RABBITMQ_MNESIA_BASE!"=="" (
@@ -167,6 +177,10 @@ if "!RABBITMQ_MNESIA_BASE!"=="" ( set RABBITMQ_MNESIA_BASE=!MNESIA_BASE!
)
)
+if not exist "!RABBITMQ_MNESIA_BASE!" (
+ mkdir "!RABBITMQ_MNESIA_BASE!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_MNESIA_BASE!") do set RABBITMQ_MNESIA_BASE=%%~sF
REM [ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
REM No Windows equivalent
@@ -183,6 +197,10 @@ if "!RABBITMQ_MNESIA_DIR!"=="" ( set RABBITMQ_MNESIA_DIR=!MNESIA_DIR!
)
)
+if not exist "!RABBITMQ_MNESIA_DIR!" (
+ mkdir "!RABBITMQ_MNESIA_DIR!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_MNESIA_DIR!") do set RABBITMQ_MNESIA_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
@@ -206,6 +224,10 @@ if "!RABBITMQ_PLUGINS_EXPAND_DIR!"=="" ( set RABBITMQ_PLUGINS_EXPAND_DIR=!PLUGINS_EXPAND_DIR!
)
)
+if not exist "!RABBITMQ_PLUGINS_EXPAND_DIR!" (
+ mkdir "!RABBITMQ_PLUGINS_EXPAND_DIR!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_PLUGINS_EXPAND_DIR!") do set RABBITMQ_PLUGINS_EXPAND_DIR=%%~sF
REM [ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
if "!RABBITMQ_ENABLED_PLUGINS_FILE!"=="" (
@@ -217,6 +239,11 @@ if "!RABBITMQ_ENABLED_PLUGINS_FILE!"=="" ( ) else (
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
+)
+for /f "delims=" %%F in ("!RABBITMQ_ENABLED_PLUGINS_FILE!") do set RABBITMQ_ENABLED_PLUGINS_FILE=%%~sF
REM [ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
if "!RABBITMQ_PLUGINS_DIR!"=="" (
@@ -228,6 +255,10 @@ if "!RABBITMQ_PLUGINS_DIR!"=="" ( ) else (
set RABBITMQ_PLUGINS_DIR_source=environment
)
+if not exist "!RABBITMQ_PLUGINS_DIR!" (
+ mkdir "!RABBITMQ_PLUGINS_DIR!"
+)
+for /f "delims=" %%F in ("!RABBITMQ_PLUGINS_DIR!") do set RABBITMQ_PLUGINS_DIR=%%~sF
REM ## Log rotation
REM [ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS}
@@ -239,6 +270,13 @@ if "!RABBITMQ_LOGS!"=="" ( set RABBITMQ_LOGS=!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
+ )
+ for /f "delims=" %%F in ("!RABBITMQ_LOGS!") do set RABBITMQ_LOGS=%%~sF
+)
REM [ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}
if "!$RABBITMQ_CTL_ERL_ARGS!"=="" (
@@ -291,22 +329,19 @@ if defined RABBITMQ_DEV_ENV ( REM not available under RabbitMQ source tree. We need to look at
REM $DEPS_DIR and default locations.
- if not "!DEPS_DIR!" == "" (
- if exist "!DEPS_DIR!\rabbit_common\ebin" (
- REM $DEPS_DIR is set, and it contains rabbitmq-common, use
- REM this.
- set DEPS_DIR_norm=!DEPS_DIR!
+ 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 "!SCRIPT_DIR!\..\..\..\erlang.mk" (
- if exist "!SCRIPT_DIR!\..\..\rabbit_common\ebin" (
- REM Look at default locations: "deps" subdirectory
- REM inside a plugin or the Umbrella.
- set DEPS_DIR_norm=!SCRIPT_DIR!\..\..
- )
+ 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=%%~dpsF%%~nF%%~xF
)
- for /f "delims=" %%F in ('realpath "!DEPS_DIR_norm!"') do @set DEPS_DIR_norm=%%F
set ERL_LIBS=!DEPS_DIR_norm!;!ERL_LIBS!
)
@@ -318,9 +353,38 @@ if defined RABBITMQ_DEV_ENV ( )
)
-if "!ERL_LIBS!" == ";" (
- set ERL_LIBS=
+REM Ensure all paths in ERL_LIBS do not contains non-ASCII characters.
+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=
+exit /b
+
+:filter_path
+set ERL_LIBS=%ERL_LIBS%;%~dps1%~n1%~x1
+exit /b
+
+:filter_paths_done
+
+REM Environment cleanup
+set BOOT_MODULE=
+set CONFIG_FILE=
+set ENABLED_PLUGINS_FILE=
+set LOG_BASE=
+set MNESIA_BASE=
+set PLUGINS_DIR=
+set SCRIPT_DIR=
+set SCRIPT_NAME=
+set TDP0=
REM ##--- End of overridden <var_name> variables
REM
diff --git a/scripts/rabbitmq-plugins.bat b/scripts/rabbitmq-plugins.bat index be938f0785..c270d5d945 100644 --- a/scripts/rabbitmq-plugins.bat +++ b/scripts/rabbitmq-plugins.bat @@ -46,7 +46,7 @@ if not defined ERL_CRASH_DUMP_SECONDS ( )
"!ERLANG_HOME!\bin\erl.exe" ^
--pa "!TDP0!..\ebin" ^
+-pa "!RABBITMQ_HOME!\ebin" ^
-noinput ^
-hidden ^
!RABBITMQ_CTL_ERL_ARGS! ^
diff --git a/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat index d1e22fde5a..83e4ae4835 100644 --- a/scripts/rabbitmq-server.bat +++ b/scripts/rabbitmq-server.bat @@ -39,7 +39,7 @@ if not exist "!ERLANG_HOME!\bin\erl.exe" ( exit /B 1
)
-set RABBITMQ_EBIN_ROOT=!TDP0!..\ebin
+set RABBITMQ_EBIN_ROOT=!RABBITMQ_HOME!\ebin
"!ERLANG_HOME!\bin\erl.exe" ^
-pa "!RABBITMQ_EBIN_ROOT!" ^
@@ -71,6 +71,17 @@ if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" ( )
)
+REM If $RABBITMQ_LOGS is '-', send all log messages to stdout. This is
+REM particularily useful for Docker images.
+
+if "!RABBITMQ_LOGS!" == "-" (
+ set SASL_ERROR_LOGGER=tty
+ set RABBIT_LAGER_HANDLER=tty
+) else (
+ set SASL_ERROR_LOGGER=false
+ set RABBIT_LAGER_HANDLER=\""!RABBITMQ_LOGS:\=/!"\"
+)
+
set RABBITMQ_START_RABBIT=
if "!RABBITMQ_ALLOW_INPUT!"=="" (
set RABBITMQ_START_RABBIT=!RABBITMQ_START_RABBIT! -noinput
@@ -97,9 +108,9 @@ if "!RABBITMQ_IO_THREAD_POOL_SIZE!"=="" ( -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_handler \""!RABBITMQ_LOGS:\=/!"\" ^
+-sasl sasl_error_logger !SASL_ERROR_LOGGER! ^
+-rabbit lager_log_root !RABBITMQ_LOG_BASE! ^
+-rabbit lager_handler !RABBIT_LAGER_HANDLER! ^
-rabbit enabled_plugins_file \""!RABBITMQ_ENABLED_PLUGINS_FILE:\=/!"\" ^
-rabbit plugins_dir \""!RABBITMQ_PLUGINS_DIR:\=/!"\" ^
-rabbit plugins_expand_dir \""!RABBITMQ_PLUGINS_EXPAND_DIR:\=/!"\" ^
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat index 389dd7eea1..59425540e6 100644 --- a/scripts/rabbitmq-service.bat +++ b/scripts/rabbitmq-service.bat @@ -111,7 +111,7 @@ if errorlevel 1 ( echo !RABBITMQ_SERVICENAME! service is already present - only updating service parameters
)
-set RABBITMQ_EBIN_ROOT=!TDP0!..\ebin
+set RABBITMQ_EBIN_ROOT=!RABBITMQ_HOME!\ebin
"!ERLANG_HOME!\bin\erl.exe" ^
-pa "!RABBITMQ_EBIN_ROOT!" ^
diff --git a/scripts/rabbitmqctl.bat b/scripts/rabbitmqctl.bat index 174f61ba23..56e856fb43 100644 --- a/scripts/rabbitmqctl.bat +++ b/scripts/rabbitmqctl.bat @@ -46,7 +46,7 @@ if not defined ERL_CRASH_DUMP_SECONDS ( )
"!ERLANG_HOME!\bin\erl.exe" ^
--pa "!TDP0!..\ebin" ^
+-pa "!RABBITMQ_HOME!\ebin" ^
-noinput ^
-hidden ^
!RABBITMQ_CTL_ERL_ARGS! ^
diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl index 225c21dd54..9edb99c4d7 100644 --- a/src/rabbit_mirror_queue_slave.erl +++ b/src/rabbit_mirror_queue_slave.erl @@ -741,6 +741,7 @@ confirm_sender_death(Pid) -> forget_sender(_, running) -> false; forget_sender(down_from_gm, down_from_gm) -> false; %% [1] +forget_sender(down_from_ch, down_from_ch) -> false; forget_sender(Down1, Down2) when Down1 =/= Down2 -> true. %% [1] If another slave goes through confirm_sender_death/1 before we |
