rendre check_pidfile idempotent
This commit is contained in:
parent
b639feca57
commit
16a8af946a
20
uscrontab
20
uscrontab
|
@ -402,21 +402,29 @@ elif [ "$action" == "run" ]; then
|
|||
ec=0
|
||||
edebug "$ctscript"
|
||||
(
|
||||
# tableau des fichiers de pid en cours. la conséquence est que ce n'est
|
||||
# pas une erreur d'appeler à plusieurs reprises check_pidfile avec le
|
||||
# même fichier
|
||||
__USCRONTAB_PIDFILES=()
|
||||
function check_pidfile() {
|
||||
if [ -n "$1" ]; then
|
||||
local pidfile="$(abspath "$1")"
|
||||
if ! array_contains __USCRONTAB_PIDFILES "$pidfile"; then
|
||||
local status
|
||||
pidfile_set -r "$1"; status=$?
|
||||
pidfile_set -r "$pidfile"; status=$?
|
||||
case "$status" in
|
||||
1)
|
||||
eerror "${2:-Une synchronisation} est en cours.
|
||||
Si vous pensez que c'est une erreur, veuillez vérifier le process de pid $(<"$1")
|
||||
puis supprimez le cas échéant le fichier $1"
|
||||
Si vous pensez que c'est une erreur, veuillez vérifier le process de pid $(<"$pidfile")
|
||||
puis supprimez le cas échéant le fichier $pidfile"
|
||||
return "$USCRONTAB_STOPEC"
|
||||
;;
|
||||
10)
|
||||
die "Une erreur s'est produite pendant l'écriture du fichier de pid. Impossible de continuer"
|
||||
;;
|
||||
esac
|
||||
array_add __USCRONTAB_PIDFILES "$pidfile"
|
||||
fi
|
||||
fi
|
||||
if [ -n "$3" -a -w "$(dirname "$3")" ]; then
|
||||
(set -o noclobber
|
||||
|
@ -428,7 +436,11 @@ puis supprimez le cas échéant le fichier $1"
|
|||
return 0
|
||||
}
|
||||
function remove_pidfile() {
|
||||
[ -n "$1" ] && ac_clean "$1"
|
||||
if [ -n "$1" ]; then
|
||||
local pidfile="$(abspath "$1")"
|
||||
ac_clean "$pidfile"
|
||||
array_del __USCRONTAB_PIDFILES "$pidfile"
|
||||
fi
|
||||
}
|
||||
__ac_forgetall
|
||||
eval "$ctscript"
|
||||
|
|
Loading…
Reference in New Issue