From f4694edbee104cddb32f723c63b11a653fbcf438 Mon Sep 17 00:00:00 2001 From: Moritz Kiemer Date: Thu, 13 Feb 2025 15:46:24 +0100 Subject: [PATCH] Revert "immediately return from RMQ starting" This reverts commit 36d7db6feb20feefad519b4b0be5ccdc112462b6. Change-Id: I4a87612368edcf80c30c39cb6cd650fc63c077a0 --- .../rabbitmq/skel/etc/init.d/rabbitmq | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/omd/packages/rabbitmq/skel/etc/init.d/rabbitmq b/omd/packages/rabbitmq/skel/etc/init.d/rabbitmq index cd93de2afc4..bcaf63eb20b 100755 --- a/omd/packages/rabbitmq/skel/etc/init.d/rabbitmq +++ b/omd/packages/rabbitmq/skel/etc/init.d/rabbitmq @@ -43,15 +43,32 @@ await_process_stop() { return 1 } +rabbitmq_accepting_connections() { + "${RABBITMQ_DIAGNOSTICS}" check_port_listener --node "${RABBITMQ_NODENAME}" "${RABBITMQ_PORT}" + # no idea why we can't use this anymore; it will fail for the management plugin + # "${RABBITMQ_DIAGNOSTICS}" check_port_connectivity --node "${RABBITMQ_NODENAME}" +} + await_process_start() { + # Only write output in the end, otherwise we clobber the logfile. max=$(("${1}" * 10)) # If the PIDFILE gets filled, rabbitmq started for N in $(seq "${max}"); do - [ $((N % 10)) -eq 0 ] && printf "." - [ -s "${PIDFILE}" ] && return 0 - [ -e "${PIDFILE}" ] || return 1 + [ -s "${PIDFILE}" ] && rabbitmq_accepting_connections &>/dev/null && break + [ -e "${PIDFILE}" ] || { + date +"%F %T.%N RabbitMQ failed to start (pidfile vanished)" + return 1 + } sleep 0.1 done + + # once again, mostly to get the output of the diagnostics call + [ -s "${PIDFILE}" ] && rabbitmq_accepting_connections && { + date +"%F %T.%N RabbitMQ considered ready" + return 0 + } + + date +"%F %T.%N RabbitMQ failed to start (giving up after timeout)" return 1 }