Skip to content

Commit

Permalink
Updated stop.sh script to use the /admin/stop API endpoint if an apik…
Browse files Browse the repository at this point in the history
…ey.txt file is available.

This brings the behaviour closer to the old version so should hopefully reduce the amount of newly introduced issues. If an API key is unavailable, it will fall back to using `kill -15 $pid` (i.e. a SIGTERM).
  • Loading branch information
archived-2 committed Jan 13, 2022
1 parent 119c1b4 commit e257fd8
Showing 1 changed file with 41 additions and 8 deletions.
49 changes: 41 additions & 8 deletions stop.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,50 @@ fi
read pid 2>/dev/null <run.pid
is_pid_valid=$?

# Swap out the API port if the --testnet (or -t) argument is specified
api_port=12391
if [[ "$@" = *"--testnet"* ]] || [[ "$@" = *"-t"* ]]; then
api_port=62391
fi

# Attempt to locate the process ID if we don't have one
if [ -z "${pid}" ]; then
# Attempt to locate the process ID
pid=$(ps aux | grep '[q]ortal.jar' | head -n 1 | awk '{print $2}')
is_pid_valid=$?
fi

echo "Stopping Qortal process $pid..."
if kill "${pid}"; then
echo "Qortal node should be shutting down"
# Locate the API key if it exists
apikey=$(cat apikey.txt)
success=0

# Try and stop via the API
if [ -n "$apikey" ]; then
echo "Stopping Qortal via API..."
if curl --url "http://localhost:${api_port}/admin/stop?apiKey=$apikey" 1>/dev/null 2>&1; then
success=1
fi
fi

# Try to kill process with SIGTERM
if [ "$success" -ne 1 ] && [ -n "$pid" ]; then
echo "Stopping Qortal process $pid..."
if kill -15 "${pid}"; then
success=1
fi
fi

# Warn and exit if still no success
if [ "$success" -ne 1 ]; then
if [ -n "$pid" ]; then
echo "${red}Stop command failed - not running with process id ${pid}?${normal}"
else
echo "${red}Stop command failed - not running?${normal}"
fi
exit 1
fi

if [ "$success" -eq 1 ]; then
echo "Qortal node should be shutting down"
if [ "${is_pid_valid}" -eq 0 ]; then
echo -n "Monitoring for Qortal node to end"
while s=`ps -p $pid -o stat=` && [[ "$s" && "$s" != 'Z' ]]; do
Expand All @@ -40,8 +75,6 @@ if kill "${pid}"; then
echo "${green}Qortal ended gracefully${normal}"
rm -f run.pid
fi
exit 0
else
echo "${red}Stop command failed - not running with process id ${pid}?${normal}"
exit 1
fi

exit 0

0 comments on commit e257fd8

Please sign in to comment.