Skip to content

Commit 005d3f2

Browse files
committed
Refactor config file discovery. Make advanced config load if no old format config is used
1 parent 7747cb4 commit 005d3f2

File tree

6 files changed

+230
-151
lines changed

6 files changed

+230
-151
lines changed

scripts/rabbitmq-defaults

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
3939
MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
4040
ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
4141
GENERATED_CONFIG_DIR=${SYS_PREFIX}/var/lib/rabbitmq/config
42-
ADVANCED_CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/advanced
42+
ADVANCED_CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/advanced.config
4343
SCHEMA_DIR=${SYS_PREFIX}/var/lib/rabbitmq/schema
4444

4545
PLUGINS_DIR="${RABBITMQ_HOME}/plugins"

scripts/rabbitmq-defaults.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ set LOG_BASE=!RABBITMQ_BASE!\log
4242
set MNESIA_BASE=!RABBITMQ_BASE!\db
4343
set ENABLED_PLUGINS_FILE=!RABBITMQ_BASE!\enabled_plugins
4444
set GENERATED_CONFIG_DIR=!RABBITMQ_BASE!\config
45-
set ADVANCED_CONFIG_FILE=!RABBITMQ_BASE!\advanced
45+
set ADVANCED_CONFIG_FILE=!RABBITMQ_BASE!\advanced.config
4646
set SCHEMA_DIR=!RABBITMQ_BASE!\schema
4747

4848
REM PLUGINS_DIR="${RABBITMQ_HOME}/plugins"

scripts/rabbitmq-server

Lines changed: 81 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,85 @@ RABBITMQ_EBIN_ROOT="${RABBITMQ_HOME}/ebin"
6262

6363
[ "$NOTIFY_SOCKET" ] && RUNNING_UNDER_SYSTEMD=true
6464

65-
set +e
65+
if [ ! -d ${RABBITMQ_SCHEMA_DIR} ]; then
66+
mkdir -p "${RABBITMQ_SCHEMA_DIR}"
67+
fi
68+
69+
if [ ! -d ${RABBITMQ_GENERATED_CONFIG_DIR} ]; then
70+
mkdir -p "${RABBITMQ_GENERATED_CONFIG_DIR}"
71+
fi
6672

73+
if [ ! -f "${RABBITMQ_SCHEMA_DIR}/rabbit.schema" ]; then
74+
cp "${RABBITMQ_HOME}/priv/schema/rabbit.schema" "${RABBITMQ_SCHEMA_DIR}"
75+
fi
76+
77+
# Check that advanced config file has the .config extension
78+
# Add .config extension if it's empty
6779
RABBITMQ_ADVANCED_CONFIG_FILE_NOEX="${RABBITMQ_ADVANCED_CONFIG_FILE%.*}"
68-
if [ "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" ]; then
69-
RABBITMQ_ADVANCED_CONFIG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}"
80+
if [ "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" \
81+
-o "${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}" = "${RABBITMQ_ADVANCED_CONFIG_FILE}" ]; then
82+
echo "Valid advanced config extension"
83+
RABBITMQ_ADVANCED_CONFIG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE_NOEX}.config"
84+
else
85+
echo "Warning: wrong extension for advanced config: ${RABBITMQ_ADVANCED_CONFIG_FILE}"
86+
exit 1
87+
fi
88+
89+
90+
RABBITMQ_CONFIG_FILE_NOEX="${RABBITMQ_CONFIG_FILE%.*}"
91+
92+
# Extension is not specified.
93+
# Determine config type from file
94+
95+
if [ "${RABBITMQ_CONFIG_FILE_NOEX}" = "${RABBITMQ_CONFIG_FILE}" ]; then
96+
if [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.config" ]; then
97+
if [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.conf" ]; then
98+
# Both files exist. Print a warning
99+
echo "WARNING: Both old (.config) and new (.conf) format config files exist."
100+
echo "WARNING: Using the old format config file: ${RABBITMQ_CONFIG_FILE_NOEX}.config"
101+
echo "WARNING: Please update your config files to the new format and remove the old file"
102+
fi
103+
RABBITMQ_CONFIG_FILE="${RABBITMQ_CONFIG_FILE_NOEX}.config"
104+
elif [ -f "${RABBITMQ_CONFIG_FILE_NOEX}.conf" ]; then
105+
RABBITMQ_CONFIG_FILE="${RABBITMQ_CONFIG_FILE_NOEX}.conf"
106+
else
107+
echo "WARNING: Config file without extension does not exist"
108+
echo "WARNING: Assuming the new config format is used"
109+
# No config file exist. Use advanced config for -config arg.
110+
RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE}"
111+
fi
112+
fi
113+
114+
# Set the -config argument.
115+
# The -config argument should not have extension.
116+
# the file should exist
117+
# the file should be a valid erlang term file
118+
119+
# Config file extension is .config
120+
if [ "${RABBITMQ_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_CONFIG_FILE}" ]; then
121+
RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_CONFIG_FILE}"
122+
# Config file extension is .conf
123+
elif [ "${RABBITMQ_CONFIG_FILE_NOEX}.conf" = "${RABBITMQ_CONFIG_FILE}" ]; then
124+
RABBITMQ_CONFIG_ARG_FILE="${RABBITMQ_ADVANCED_CONFIG_FILE}"
125+
fi
126+
127+
# Set -config if the file exists
128+
if [ -f "${RABBITMQ_CONFIG_ARG_FILE}" ]; then
129+
RABBITMQ_CONFIG_ARG_FILE_NOEX="${RABBITMQ_CONFIG_ARG_FILE%.*}"
130+
RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_ARG_FILE_NOEX}"
131+
fi
132+
133+
# Set -conf and other generated config parameters
134+
if [ "${RABBITMQ_CONFIG_FILE_NOEX}.conf" = "${RABBITMQ_CONFIG_FILE}" ]; then
135+
RABBITMQ_GENERATED_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE} \
136+
-conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} \
137+
-conf_script_dir `dirname $0` \
138+
-conf_schema_dir ${RABBITMQ_SCHEMA_DIR}
139+
-conf_advanced ${RABBITMQ_ADVANCED_CONFIG_FILE}"
70140
fi
71141

142+
set +e
143+
72144
# `net_kernel:start/1` will fail in `longnames` mode when erlang is
73145
# unable to determine FQDN of a node (with a dot in it). But `erl`
74146
# itself has some magic that still allow it to start when you
@@ -80,6 +152,10 @@ fi
80152
# enough.
81153
RABBITMQ_PRELAUNCH_NODENAME="rabbitmqprelaunch${$}@localhost"
82154

155+
156+
157+
RABBITMQ_CONIG_ARGUMENT_FILE=
158+
83159
# NOTIFY_SOCKET is needed here to prevent epmd from impersonating the
84160
# success of our startup sequence to systemd.
85161
NOTIFY_SOCKET= \
@@ -108,18 +184,6 @@ else
108184
exit ${PRELAUNCH_RESULT}
109185
fi
110186

111-
if [ ! -d ${RABBITMQ_SCHEMA_DIR} ]; then
112-
mkdir -p "${RABBITMQ_SCHEMA_DIR}"
113-
fi
114-
115-
if [ ! -d ${RABBITMQ_GENERATED_CONFIG_DIR} ]; then
116-
mkdir -p "${RABBITMQ_GENERATED_CONFIG_DIR}"
117-
fi
118-
119-
if [ ! -f "${RABBITMQ_SCHEMA_DIR}/rabbit.schema" ]; then
120-
cp "${RABBITMQ_HOME}/priv/schema/rabbit.schema" "${RABBITMQ_SCHEMA_DIR}"
121-
fi
122-
123187
# The default allocation strategy RabbitMQ is using was introduced
124188
# in Erlang/OTP 20.2.3. Earlier Erlang versions fail to start with
125189
# this configuration. We therefore need to ensure that erl accepts
@@ -141,38 +205,6 @@ fi
141205

142206
set -e
143207

144-
RABBITMQ_CONFIG_FILE_NOEX="${RABBITMQ_CONFIG_FILE%.*}"
145-
146-
if [ "${RABBITMQ_CONFIG_FILE_NOEX}.config" = "${RABBITMQ_CONFIG_FILE}" ]; then
147-
if [ -f "${RABBITMQ_CONFIG_FILE}" ]; then
148-
RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_FILE_NOEX}"
149-
fi
150-
elif [ "${RABBITMQ_CONFIG_FILE_NOEX}.conf" = "${RABBITMQ_CONFIG_FILE}" ]; then
151-
RABBITMQ_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE_NOEX} \
152-
-conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} \
153-
-conf_script_dir `dirname $0` \
154-
-conf_schema_dir ${RABBITMQ_SCHEMA_DIR}"
155-
if [ -f "${RABBITMQ_ADVANCED_CONFIG_FILE}.config" ]; then
156-
RABBITMQ_CONFIG_ARG="${RABBITMQ_CONFIG_ARG} \
157-
-conf_advanced ${RABBITMQ_ADVANCED_CONFIG_FILE} \
158-
-config ${RABBITMQ_ADVANCED_CONFIG_FILE}"
159-
fi
160-
else
161-
if [ -f "${RABBITMQ_CONFIG_FILE}.config" ]; then
162-
RABBITMQ_CONFIG_ARG="-config ${RABBITMQ_CONFIG_FILE}"
163-
elif [ -f "${RABBITMQ_CONFIG_FILE}.conf" ]; then
164-
RABBITMQ_CONFIG_ARG="-conf ${RABBITMQ_CONFIG_FILE} \
165-
-conf_dir ${RABBITMQ_GENERATED_CONFIG_DIR} \
166-
-conf_script_dir `dirname $0` \
167-
-conf_schema_dir ${RABBITMQ_SCHEMA_DIR}"
168-
if [ -f "${RABBITMQ_ADVANCED_CONFIG_FILE}.config" ]; then
169-
RABBITMQ_CONFIG_ARG="${RABBITMQ_CONFIG_ARG} \
170-
-conf_advanced ${RABBITMQ_ADVANCED_CONFIG_FILE} \
171-
-config ${RABBITMQ_ADVANCED_CONFIG_FILE}"
172-
fi
173-
fi
174-
fi
175-
176208
RABBITMQ_LISTEN_ARG=
177209
[ "x" != "x$RABBITMQ_NODE_PORT" ] && [ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_LISTEN_ARG="-rabbit tcp_listeners [{\""${RABBITMQ_NODE_IP_ADDRESS}"\","${RABBITMQ_NODE_PORT}"}]"
178210

@@ -225,11 +257,13 @@ start_rabbitmq_server() {
225257
ERL_MAX_ETS_TABLES=$ERL_MAX_ETS_TABLES \
226258
ERL_CRASH_DUMP=$ERL_CRASH_DUMP \
227259
exec ${ERL_DIR}erl \
260+
-init_debug \
228261
-pa ${RABBITMQ_SERVER_CODE_PATH} ${RABBITMQ_EBIN_ROOT} \
229262
${RABBITMQ_START_RABBIT} \
230263
${RABBITMQ_NAME_TYPE} ${RABBITMQ_NODENAME} \
231264
-boot "${SASL_BOOT_FILE}" \
232265
${RABBITMQ_CONFIG_ARG} \
266+
${RABBITMQ_GENERATED_CONFIG_ARG} \
233267
+W w \
234268
+A ${RABBITMQ_IO_THREAD_POOL_SIZE} \
235269
${RABBITMQ_DEFAULT_ALLOC_ARGS} \

scripts/rabbitmq-server.bat

Lines changed: 73 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,79 @@ if not exist "!ERLANG_HOME!\bin\erl.exe" (
4848

4949
set RABBITMQ_EBIN_ROOT=!RABBITMQ_HOME!\ebin
5050

51+
if not exist "!RABBITMQ_SCHEMA_DIR!" (
52+
mkdir "!RABBITMQ_SCHEMA_DIR!"
53+
)
54+
55+
if not exist "!RABBITMQ_GENERATED_CONFIG_DIR!" (
56+
mkdir "!RABBITMQ_GENERATED_CONFIG_DIR!"
57+
)
58+
59+
if not exist "!RABBITMQ_SCHEMA_DIR!\rabbit.schema" (
60+
copy "!RABBITMQ_HOME!\priv\schema\rabbit.schema" "!RABBITMQ_SCHEMA_DIR!\rabbit.schema"
61+
)
62+
5163
CALL :get_noex !RABBITMQ_ADVANCED_CONFIG_FILE! RABBITMQ_ADVANCED_CONFIG_FILE_NOEX
52-
if "!RABBITMQ_ADVANCED_CONFIG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!.config" (
53-
set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!
64+
65+
if "!RABBITMQ_ADVANCED_CONFIG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!" (
66+
set RABBITMQ_ADVANCED_CONFIG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!.config
67+
) else if not "!RABBITMQ_ADVANCED_CONFIG_FILE!" == "!RABBITMQ_ADVANCED_CONFIG_FILE_NOEX!.config" (
68+
echo "Warning: wrong extension for advanced config: !RABBITMQ_ADVANCED_CONFIG_FILE!"
69+
exit /B 1
70+
)
71+
72+
REM Try to create advanced config file, if it doesn't exist
73+
REM It still can fail to be created, but at least not for default install
74+
if not exist "!RABBITMQ_ADVANCED_CONFIG_FILE!" (
75+
echo []. > !RABBITMQ_ADVANCED_CONFIG_FILE!
76+
)
77+
78+
CALL :get_noex !RABBITMQ_CONFIG_FILE! RABBITMQ_CONFIG_FILE_NOEX
79+
80+
if "!RABBITMQ_CONFIG_FILE!" == "!RABBITMQ_CONFIG_FILE_NOEX!" (
81+
if exist "!RABBITMQ_CONFIG_FILE_NOEX!.config" (
82+
if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
83+
# Both files exist. Print a warning
84+
echo "WARNING: Both old (.config) and new (.conf) format config files exist."
85+
echo "WARNING: Using the old format config file: !RABBITMQ_CONFIG_FILE_NOEX!.config"
86+
echo "WARNING: Please update your config files to the new format and remove the old file"
87+
)
88+
set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.config
89+
) else if exist "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
90+
set RABBITMQ_CONFIG_FILE=!RABBITMQ_CONFIG_FILE_NOEX!.conf
91+
) else (
92+
echo "WARNING: Config file without extension does not exist"
93+
echo "WARNING: Assuming the new config format is used"
94+
rem No config file exist. Use advanced config for -config arg.
95+
set RABBITMQ_CONFIG_ARG_FILE="!RABBITMQ_ADVANCED_CONFIG_FILE!"
96+
)
97+
)
98+
99+
rem Set the -config argument.
100+
rem The -config argument should not have extension.
101+
rem the file should exist
102+
rem the file should be a valid erlang term file
103+
104+
rem Config file extension is .config
105+
if "!RABBITMQ_CONFIG_FILE_NOEX!.config" == "!RABBITMQ_CONFIG_FILE" (
106+
set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_CONFIG_FILE!
107+
) else if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE" (
108+
set RABBITMQ_CONFIG_ARG_FILE=!RABBITMQ_ADVANCED_CONFIG_FILE!
109+
)
110+
111+
rem Set -config if the file exists
112+
if exist !RABBITMQ_CONFIG_ARG_FILE! (
113+
CALL :get_noex !RABBITMQ_CONFIG_ARG_FILE! RABBITMQ_CONFIG_ARG_FILE_NOEX
114+
set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_ARG_FILE_NOEX!"
115+
)
116+
117+
rem Set -conf and other generated config parameters
118+
if "!RABBITMQ_CONFIG_FILE_NOEX!.conf" == "!RABBITMQ_CONFIG_FILE" (
119+
set RABBITMQ_GENERATED_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" ^
120+
-conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
121+
-conf_script_dir !CONF_SCRIPT_DIR:\=/! ^
122+
-conf_schema_dir "!RABBITMQ_SCHEMA_DIR!" ^
123+
-conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!"
54124
)
55125

56126
"!ERLANG_HOME!\bin\erl.exe" ^
@@ -93,52 +163,8 @@ if ERRORLEVEL 1 (
93163
set RABBITMQ_DEFAULT_ALLOC_ARGS=
94164
)
95165

96-
if not exist "!RABBITMQ_SCHEMA_DIR!" (
97-
mkdir "!RABBITMQ_SCHEMA_DIR!"
98-
)
99-
100-
if not exist "!RABBITMQ_GENERATED_CONFIG_DIR!" (
101-
mkdir "!RABBITMQ_GENERATED_CONFIG_DIR!"
102-
)
103-
104-
if not exist "!RABBITMQ_SCHEMA_DIR!\rabbit.schema" (
105-
copy "!RABBITMQ_HOME!\priv\schema\rabbit.schema" "!RABBITMQ_SCHEMA_DIR!\rabbit.schema"
106-
)
107-
108166
set RABBITMQ_EBIN_PATH="-pa !RABBITMQ_EBIN_ROOT!"
109167

110-
CALL :get_noex !RABBITMQ_CONFIG_FILE! RABBITMQ_CONFIG_FILE_NOEX
111-
112-
if "!RABBITMQ_CONFIG_FILE!" == "!RABBITMQ_CONFIG_FILE_NOEX!.config" (
113-
if exist "!RABBITMQ_CONFIG_FILE!" (
114-
set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_FILE_NOEX!"
115-
)
116-
) else if "!RABBITMQ_CONFIG_FILE!" == "!RABBITMQ_CONFIG_FILE_NOEX!.conf" (
117-
set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE_NOEX!" ^
118-
-conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
119-
-conf_script_dir !CONF_SCRIPT_DIR:\=/! ^
120-
-conf_schema_dir "!RABBITMQ_SCHEMA_DIR!"
121-
if exist "!RABBITMQ_ADVANCED_CONFIG_FILE!.config" (
122-
set RABBITMQ_CONFIG_ARG=!RABBITMQ_CONFIG_ARG! ^
123-
-conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!" ^
124-
-config "!RABBITMQ_ADVANCED_CONFIG_FILE!"
125-
)
126-
) else (
127-
if exist "!RABBITMQ_CONFIG_FILE!.config" (
128-
set RABBITMQ_CONFIG_ARG=-config "!RABBITMQ_CONFIG_FILE!"
129-
) else if exist "!RABBITMQ_CONFIG_FILE!.conf" (
130-
set RABBITMQ_CONFIG_ARG=-conf "!RABBITMQ_CONFIG_FILE!" ^
131-
-conf_dir "!RABBITMQ_GENERATED_CONFIG_DIR!" ^
132-
-conf_script_dir !CONF_SCRIPT_DIR:\=/! ^
133-
-conf_schema_dir "!RABBITMQ_SCHEMA_DIR!"
134-
if exist "!RABBITMQ_ADVANCED_CONFIG_FILE!.config" (
135-
set RABBITMQ_CONFIG_ARG=!RABBITMQ_CONFIG_ARG! ^
136-
-conf_advanced "!RABBITMQ_ADVANCED_CONFIG_FILE!" ^
137-
-config "!RABBITMQ_ADVANCED_CONFIG_FILE!"
138-
)
139-
)
140-
)
141-
142168
set RABBITMQ_LISTEN_ARG=
143169
if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" (
144170
if not "!RABBITMQ_NODE_PORT!"=="" (
@@ -191,6 +217,7 @@ if "!ENV_OK!"=="false" (
191217
-boot start_sasl ^
192218
!RABBITMQ_START_RABBIT! ^
193219
!RABBITMQ_CONFIG_ARG! ^
220+
!RABBITMQ_GENERATED_CONFIG_ARG! ^
194221
!RABBITMQ_NAME_TYPE! !RABBITMQ_NODENAME! ^
195222
+W w ^
196223
+A "!RABBITMQ_IO_THREAD_POOL_SIZE!" ^

0 commit comments

Comments
 (0)