@@ -253,17 +253,27 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
253
253
)
254
254
255
255
# determine whether to set "vm_memory_high_watermark" (based on cgroups)
256
- if [ -r /sys/fs/cgroup/memory/memory.limit_in_bytes ] && [ -r /proc/meminfo ]; then
257
- memLimitB=" $( < /sys/fs/cgroup/memory/memory.limit_in_bytes) "
258
- memLimitKb=" $(( memLimitB / 1024 )) "
259
-
256
+ memTotalKb=
257
+ if [ -r /proc/meminfo ]; then
260
258
memTotalKb=" $( awk -F ' :? +' ' $1 == "MemTotal" { print $2; exit }' /proc/meminfo) "
261
-
262
- if [ " $memLimitKb " -gt " $memTotalKb " ]; then
259
+ fi
260
+ memLimitB=
261
+ memLimitKb=
262
+ if [ -r /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then
263
+ memLimitB=" $( < /sys/fs/cgroup/memory/memory.limit_in_bytes) "
264
+ if [ " $memLimitB " = ' 0' ]; then
265
+ # it appears that "WARNING: No kernel memory limit support" leads to "/sys/fs/cgroup/memory/memory.limit_in_bytes" containing the value "0"
263
266
memLimitB=
264
- memLimitKb=
265
267
fi
266
-
268
+ if [ -n " $memLimitB " ]; then
269
+ memLimitKb=" $(( memLimitB / 1024 )) "
270
+ if [ -n " $memTotalKb " ] && [ " $memLimitKb " -gt " $memTotalKb " ]; then
271
+ memLimitB=
272
+ memLimitKb=
273
+ fi
274
+ fi
275
+ fi
276
+ if [ -n " $memTotalKb " ] || [ -n " $memLimitB " ]; then
267
277
# https://github.com/docker-library/rabbitmq/pull/105#issuecomment-242165822
268
278
vmMemoryHighWatermark=
269
279
if [ " ${RABBITMQ_VM_MEMORY_HIGH_WATERMARK:- } " ]; then
@@ -310,10 +320,8 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
310
320
rabbitConfig+=( " { vm_memory_high_watermark, $vmMemoryHighWatermark }" )
311
321
fi
312
322
elif [ " ${RABBITMQ_VM_MEMORY_HIGH_WATERMARK:- } " ]; then
313
- echo >&2 ' warning: RABBITMQ_VM_MEMORY_HIGH_WATERMARK was specified, but one of the following is not readable:'
314
- echo >&2 ' - /sys/fs/cgroup/memory/memory.limit_in_bytes'
315
- echo >&2 ' - /proc/meminfo'
316
- echo >&2 ' (so "vm_memory_high_watermark" will not be set)'
323
+ echo >&2 ' warning: RABBITMQ_VM_MEMORY_HIGH_WATERMARK was specified, but current system memory or cgroup memory limit cannot be determined'
324
+ echo >&2 ' (so "vm_memory_high_watermark" will not be set)'
317
325
fi
318
326
319
327
if [ " $haveSslConfig " ]; then
0 commit comments