Skip to content

Commit 8ba0562

Browse files
lukebakkenmichaelklishin
authored andcommitted
No need for || exit "$?"
Follow-up to #10819 @dumbbell made a note that the `|| exit "$?"` code is probably redundant. @lukebakken tested this patch using the RMQ docker image and `dash`, and the test procedure provided by @giner here: #10819 (comment) ```sh mkdir ~/ubuntu_24.04 vagrant init ubuntu/noble64 cd ~/ubuntu_24.04 vagrant up vagrant ssh sudo apt update sudo apt install docker.io newgrp docker mkdir -p /tmp/rabbitmq cd /tmp/rabbitmq cat > Dockerfile << 'EOF' from "rabbitmq" RUN sed -i 's/wait "\$rabbitmq_server_pid" || true/wait "$rabbitmq_server_pid" || (exit "$?")/g' "$(which rabbitmq-server)" EOF docker build -t rabbitmq-test-script . docker rm -f rabbitmq-orig 2>/dev/null docker run --restart on-failure -d --name rabbitmq-orig rabbitmq docker rm -f rabbitmq-test-script 2>/dev/null docker run --restart on-failure -d --name rabbitmq-test-script rabbitmq-test-script sleep 5 docker exec rabbitmq-orig /bin/sh -c 'kill -USR2 $(pidof beam.smp)' docker exec rabbitmq-test-script /bin/sh -c 'kill -USR2 $(pidof beam.smp)' sleep 5 echo echo "*** rabbitmq-orig ***" docker logs rabbitmq-orig 2>&1 | grep "User defined signal\|Starting RabbitMQ" echo echo "*** rabbitmq-test-script ***" docker logs rabbitmq-test-script 2>&1 | grep "User defined signal\|Starting RabbitMQ" echo docker ps -a ```
1 parent 7123492 commit 8ba0562

File tree

1 file changed

+6
-17
lines changed

1 file changed

+6
-17
lines changed

deps/rabbit/scripts/rabbitmq-server

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ start_rabbitmq_server() {
8383
stop_rabbitmq_server() {
8484
if test "$rabbitmq_server_pid"; then
8585
kill -TERM "$rabbitmq_server_pid"
86-
wait "$rabbitmq_server_pid" || exit "$?"
86+
wait "$rabbitmq_server_pid"
8787
fi
8888
}
8989

@@ -129,23 +129,12 @@ else
129129
trap "stop_rabbitmq_server; exit 130" INT
130130

131131
start_rabbitmq_server "$@" &
132-
export rabbitmq_server_pid=$!
132+
export rabbitmq_server_pid="$!"
133133

134134
# Block until RabbitMQ exits or a signal is caught.
135135
# Waits for last command (which is start_rabbitmq_server)
136-
#
137-
# The "|| true" is here to work around an issue with Dash. Normally
138-
# in a Bourne shell, if `wait` is interrupted by a signal, the
139-
# signal handlers defined above are executed and the script
140-
# terminates with the exit code of `wait` (unless the signal handler
141-
# overrides that).
142-
# In the case of Dash, it looks like `set -e` (set at the beginning
143-
# of this script) gets precedence over signal handling. Therefore,
144-
# when `wait` is interrupted, its exit code is non-zero and because
145-
# of `set -e`, the script terminates immediately without running the
146-
# signal handler. To work around this issue, we use "|| true" to
147-
# force that statement to succeed and the signal handler to properly
148-
# execute. Because the statement below has an exit code of 0, the
149-
# signal handler has to restate the expected exit code.
150-
wait "$rabbitmq_server_pid" || exit "$?"
136+
# In a POSIX Bourne shell, if `wait` is interrupted by a signal, the signal
137+
# handlers defined above are executed and the script terminates with the
138+
# exit code of `wait` (unless the signal handler overrides that).
139+
wait "$rabbitmq_server_pid"
151140
fi

0 commit comments

Comments
 (0)