Anomalie #168

Eviter l'exécution concurrente de tâche

Added by Grégory MARIGOT - TEICEE over 2 years ago. Updated over 1 year ago.

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

Revision 866
Added by Grégory MARIGOT - TEICEE over 1 year ago

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 over 1 year 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 over 1 year ago

  • Target version set to ProxyEPN 2.6

Also available in: Atom PDF