Anomalie #168
Eviter l'exécution concurrente de tâche
Status: | Résolu | Start date: | 07/05/2018 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | Grégory MARIGOT - TEICEE | % Done: | 100% |
|
Category: | - | |||
Target version: | ProxyEPN 2.6 | |||
Version ProxyEPN: | 2.4 |
Description
Les tâches exécutables en CLI, prévues pour être progammées périodiquement en tâche CRON, ne disposent pas de contrôle pour éviter des exécutions concurrentes.
Cela peut poser des soucis sur des tâches programmées sur des intervalles très court. Par exemple la remontée de données de connexion par proxyepn:session-live peut être lancé toutes les minutes. Mais si jamais un traitement prend plus d'une minute, une nouvelle exécution peut avoir lieu alors que la précédente n'est pas terminée. Cela peut aboutir à des doublons de traitement.
Associated revisions
FIX #168: exemple de fichier pour configuration des tâches cron (avec test via 'ps' pour éviter lancement concurrent sur la tâche session-live)
History
Updated by Grégory MARIGOT - TEICEE almost 2 years ago
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Un fichier d'exemples pour la configuration des tâches cron est fourni dans `doc/proxyepn.cron`.
Il y est suggéré d'effectuer un test sur les processus en cours d'exécution avant de lancer la tâche 'session-live' :
* * * * * root ps ax | grep -v grep | grep -q '/your/install/path/proxyepn/symfony proxyepn:session-live' || "/your/install/path/proxyepn/symfony" proxyepn:session-live
Une solution alternative aurait été de gérer des fichiers de locks directement par les scripts symfony. Mais cette méthode est moins souple (test imposé au lieu de laisser la décision dans la définition du cron) et peut être problématique si le script s'interrompt avant d'avoir lever son lock.
Updated by Grégory MARIGOT - TEICEE almost 2 years ago
- Target version set to ProxyEPN 2.6