forked from LORD-MicroStrain/ntrip_client
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add entrypoint script to exit properly
- Loading branch information
1 parent
f1f20a8
commit 2d1ec73
Showing
2 changed files
with
44 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
#!/bin/bash -e | ||
|
||
_term() { | ||
# FILL UP PROCESS SEARCH PATTERN HERE TO FIND PROPER PROCESS FOR SIGINT: | ||
pattern="ntrip_client/ntrip_ros.py" | ||
|
||
pid_value="$(ps -e | grep $pattern | grep -v grep | awk '{ print $1 }')" | ||
if [ "$pid_value" != "" ]; then | ||
pid=$pid_value | ||
echo "Send SIGINT to pid $pid" | ||
else | ||
pid=1 | ||
echo "Pattern not found, send SIGINT to pid $pid" | ||
fi | ||
kill -s SIGINT $pid | ||
} | ||
# Use SIGTERM or TERM, does not seem to make any difference. | ||
trap _term TERM | ||
|
||
ros-with-env ros2 launch ntrip_client ntrip_client_launch.py & | ||
child=$! | ||
|
||
echo "Waiting for pid $child" | ||
# * Calling "wait" will then wait for the job with the specified by $child to finish, or for any signals to be fired. | ||
# Due to "or for any signals to be fired", "wait" will also handle SIGTERM and it will shutdown before | ||
# the node ends gracefully. | ||
# The solution is to add a second "wait" call and remove the trap between the two calls. | ||
# * Do not use -e flag in the first wait call because wait will exit with error after catching SIGTERM. | ||
set +e | ||
wait $child | ||
set -e | ||
trap - TERM | ||
wait $child | ||
RESULT=$? | ||
|
||
if [ $RESULT -ne 0 ]; then | ||
echo "ERROR: ntrip node failed with code $RESULT" >&2 | ||
exit $RESULT | ||
else | ||
echo "INFO: ntrip node finished successfully, but returning 125 code for docker to restart properly." >&2 | ||
exit 125 | ||
fi |