AntaresSimulatorTeam / AntaREST

API REST and WebUI for Antares_Simulator
Apache License 2.0
10 stars 6 forks source link

Add slurm_launcher orphan workspace recovery #948

Open pl-buiquang opened 2 years ago

pl-buiquang commented 2 years ago

Dans le cas d'un worker gunicorn qui se termine suite à un plantage, son SlurmLauncher se terminera également et le worker qui le remplace ne pourra pas s'initier avec le slurm_workspace du worker tué précédemment (car il y a un filelock qui n'est nettoyé qu' au redémarrage du service complet).

Une méthode devrait être ajoutée pour récupérer tout travail de lancement manquant et l'ajouter à un worker SlurmLauncher en cours d'exécution.

RAPPEL : le lancement des workers par gunicorn se fait au niveau du Docker avec le script scripts/start.sh. Si un worker plante, gunicorn en lance un nouveau.

Voir antarest/launcher/adapters/slurm_launcher/slurm_launcher.py : la fonction _init_workspace va créer de nouveaux dossiers s'il y a un .lock ou en utiliser un existant.

Les dossiers de travail des workers se trouvent dans le répertoire /applis/antares/data/slurm_workspace/.

Il y a toujours le même nombre de workers (il y en a par exemple 9 en recette).

Au démarrage d'Antares Web, chaque worker recherche un sous-dossier de travail dans slurm_workspace/ et le verouille s'il n'y a pas déjà de .lock.

En cas de plantage, gunicorn relance le worker planté. Le nouveau worker n'utilisera pas le sous-dossier du worker planté car il reste verrouillé. On perd le travaille en cours, car il y a nécessairement un traitement en cours sur CALIN.

Cette issue pourrait être résolue dans #741. Il n'est donc pas nécessaire de la développer.

pl-buiquang commented 1 year ago

Should be fixed by #741