Améliorer la gestion des SIGTERM
mborne opened this issue · comments
MBorne commented
Contexte
Il convient de mieux traiter les SIGTERM pour l'exécution en environnement afin de :
- Fluidifier les arrêts/redémarrages du conteneur exécutant apache2
- Mieux traiter l'arrêt du conteneur exécutant la boucle de validation (retour au statut "PENDING")
Actions
-
.docker/application.sh run
- faire suivre SIGTERM à apache2 -
.docker/application.sh backend
/loop-validate.sh
- faire suivre SIGTERM à la commande à la commande PHP et arrêter la boucle en cas de SIGTERM - Implémenter l'interface
SignalableCommandInterface
au niveau de la commande de traitement de validation (processing -> pending en cas d'arrêt) - Ajouter l'extension "pcntl" à l'image docker
Remarque
- Le comportement peut-être testé à l'aide de
docker stop <conteneur> -t 600
- ATTENTION : L'image php:8.2-apache définit
STOPSIGNAL=SIGWINCH
(c.f. https://github.com/docker-library/php/blob/master/8.2/bookworm/apache/Dockerfile) ce qui donne un comportement pas classique et pas évident à comprendre (vs SIGTERM classique) - Voir linuxconfig.org - How to propagate a signal to child processes from a Bash script et unix.stackexchange.com - Forward SIGTERM to child in Bash pour la partie backend
- Voir New in Symfony 5.2: Console signals pour la partie Symfony (
SignalableCommandInterface
)