summaryrefslogtreecommitdiff
path: root/scripts/rabbitmq-server
diff options
context:
space:
mode:
authorAlexey Lebedeff <alebedev@mirantis.com>2015-12-31 12:30:04 +0300
committerAlexey Lebedeff <alebedev@mirantis.com>2015-12-31 15:38:06 +0300
commitfe243c2e71771b208574c612b9a06b52ca1a509c (patch)
treedc71e78ddbc6df0747822068ce2aa97aebe57e25 /scripts/rabbitmq-server
parent4f1483b3d9bab8f996128e676f40b168eb0fee65 (diff)
downloadrabbitmq-server-git-fe243c2e71771b208574c612b9a06b52ca1a509c.tar.gz
Improve diagnostics in 'rabbitmq-server' script
While errors are detected with '-e' shell option in this script, diagnostics messages leave a lot to be desired. E.g. when trying to write pid file to full partition, the only message in log is: sh: echo: I/O error Which is definitely insufficient
Diffstat (limited to 'scripts/rabbitmq-server')
-rwxr-xr-xscripts/rabbitmq-server17
1 files changed, 15 insertions, 2 deletions
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server
index 69c2b7ff6c..548a085434 100755
--- a/scripts/rabbitmq-server
+++ b/scripts/rabbitmq-server
@@ -38,8 +38,21 @@ case "$(uname -s)" in
if [ $detached ]; then
echo "Warning: PID file not written; -detached was passed." 1>&2
else
- mkdir -p $(dirname ${RABBITMQ_PID_FILE});
- echo $$ > ${RABBITMQ_PID_FILE}
+ 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
+ # Bettern 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