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