From 15a46373fbb1f461f09ebe675ba1f58a40a6ac2a Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 4 Oct 2023 19:20:35 +0200 Subject: [PATCH] forgejo-runner.sh reload must wait for the daemon to stop --- forgejo-runner.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/forgejo-runner.sh b/forgejo-runner.sh index bc3d165..349e96f 100755 --- a/forgejo-runner.sh +++ b/forgejo-runner.sh @@ -32,13 +32,17 @@ function register() { function run() { rm -f forgejo-runner.log - daemon --chdir=$(pwd) --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" --pidfile=$(pwd)/forgejo-runner-pid --errlog=$(pwd)/forgejo-runner.log --output=$(pwd)/forgejo-runner.log -- forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon + daemon --chdir=$(pwd) --unsafe \ + --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \ + --pidfile=$(pwd)/forgejo-runner-pid --errlog=$(pwd)/forgejo-runner.log --output=$(pwd)/forgejo-runner.log -- \ + forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon sleep 1 cat forgejo-runner.log } function reload() { teardown + rm -f forgejo-runner.log run } @@ -53,11 +57,26 @@ function setup() { run } -function teardown() { - if test -f forgejo-runner-pid ; then - kill -TERM $(cat forgejo-runner-pid) - rm -f forgejo-runner-pid +function stop_daemon() { + local daemon=$1 + local DIR=. + + if test -f $DIR/$daemon-pid ; then + local pid=$(cat $DIR/$daemon-pid) + kill -TERM $pid + pidwait $pid || true + for delay in 1 1 2 2 5 5 ; do + if ! test -f $DIR/$daemon-pid ; then + break + fi + sleep $delay + done + ! test -f $DIR/$daemon-pid fi } +function teardown() { + stop_daemon forgejo-runner +} + "$@"