Statuts des actions
-
Une Action est la planification d’une exécution d’une fonctionnalité du logiciel par le serveur d’exécution d’actions déclenchées.
Chaque action prendra différents statuts en fonction de son cycle de vie :static
Une action statique ne supportera pas l’exécution en soi, mais sert de paramétrage, de modèle, pour l’exécution d’actions.
Elle est reliée à la configuration des différents types de déclencheurs automatiques.Particularités de ces actions :
- Le serveur d’exécution d’actions déclenchées crée des actions filles aux actions statiques : ce sont ces actions filles qui seront exécutées, pas l’action statique elle-même
- L’heure de dernière exécution correspond à l’heure de dernière exécution d’une action fille (la plus récente)
- L’heure de prochaine exécution correspond à la prochaine heure d’exécution planifiée de l’action fille créée, pour le cas d’un déclencheur horodaté. Pour les autres déclencheurs, elle peut être placée à Date_Time::max() car aucune heure n’est planifiée, le déclenchement dépendante d’autres critères qu’un calendrier
- Les actions en static n’ont pas de parent, et ne recevront jamais d’identifiant de requête
pending
Une action en attente est planifiée pour l’exécution. Dès que l’heure système atteindra l’heure de prochaine exécution, elle donnera lieu à une exécution.
launching
Une action en cours de lancement a été prise en charge par le serveur, et va être lancée dans la foulée.
La date de prochaine exécution est également recalculée, dans le cas d’un déclencheur horodaté, pour correspondre à l’heure où aura lieu sa prochaine exécution.
En principe une action ne reste pas launching longtemps : elle doit immédiatement passer en launched ou launch_error. Le seul cas où une action resterait dans ce statut serait un arrêt brutal du serveur d’exécution d’actions déclenchées pendant cette phase.launch_error
Le statut erreur de lancement termine l’action : le serveur a détecté qu’elle ne s’était pas exécutée correctement dans la mesure où :
- soit il n’a pas pu récupérer un identifiant de processus système lancé (erreur de création de processus)
- soit il n’a pas su générer d’identifiant unique au moment de créer le processus système lancé (erreur de génération uniqid, normalement ça ne devrait jamais arriver)
launched
Action lancée : c’est à dire que le processus a été généré et le processus lancé.
Une fois par seconde, le serveur d’exécution d’actions déclenchées scanne toutes les actions en statut launched dans le but de vérifier si on a bien un journal logiciel confirmant que l’action est bien en cours d’exécution ou terminée.
Un engorgement d’actions dans ce statut révélerait un problème à l’exécution en mode console des actions, et serait préjudiciable au bon fonctionnement du serveur : si trop d’actions sont dans ce statut, le serveur va être chargé pour rien, ne plus avoir de réactivité, et consommer trop de ressources MySQL+CPU+RAM.error
Le statut erreur est posé si l’action lancée a rendu la main (fin du processus exécuté) mais n’a pas enregistré d’heure de fin d’exécution dans le journal du logiciel. C’est a priori révélateur d’une erreur pendant l’exécution, qu’il conviendrait d’analyser pour que ça ne se reproduise pas.
done
Le statut terminé indique que le processus s’est terminé et qu’on a bien trouvé dans les journaux une heure de fin d’exécution, indiquant que l’exécution s’est bien déroulée.
Attention, ça ne garantit pas que le déroulement est ok d’un point de vue métier : si la fonctionnalité appelée traite ses erreurs sans interrompre l’exécution, on sera en statut done. Le statut error ne survient que si l’exécution de la fonctionnalité est mauvaise structurellement, c’est à dire s’est interrompue avant d’arriver à l’écriture de l’heure de fin d’exécution, aucun contrôle métier ne revient jusqu’ici.