Supprimer des dossiers en ligne de commande
Introduction
Il est possible, via un accès au serveur api en ligne de commande, de passer une commande pour supprimer une ou plusieurs entries sans passer par une couche HTML. La commande supporte le traitement séquentiel et parallèle pour améliorer les performances lors de suppressions massives.
Commande
La commande à passer est la suivante depuis le conteneur de mdf-api
Arguments
La commande pour supprimer des entries dans mdf accepte plusieurs arguments. L'entièreté des arguments peut être retrouvé sur l'aide de la commande accessible par
| Nom de l'argument | Abbréviation | Obligatoire | Valeur par défaut | Détail |
|---|---|---|---|---|
| ids | Ø | Conditionnel | Ø | Liste des identifiants (UUID) des entrées à supprimer. Obligatoire si l'option --file n'est pas fournie. Mutuellement exclusif avec l'option --file. Si aucun identifiant n'est fourni et que l'option --file n'est pas utilisée, une erreur sera levée |
| agentIdentifier | ai | Oui | Ø | Identifier (et non id) de l'agent exécutant la suppression. Cet agent doit avoir les droits de suppression sur les entries concernées |
| file | f | Non | false | Chemin vers un fichier contenant les identifiants (UUID) à supprimer, un par ligne ou séparés par des espaces. Mutuellement exclusif avec l'argument ids. Le fichier doit être lisible et contenir uniquement des UUIDs valides |
| parallel | p | Non | false | Active le traitement parallèle des suppressions. Améliore significativement les performances pour les suppressions massives. Si l'extension n'est pas disponible, une erreur sera levée |
| workers | w | Non | 4 | Nombre de processus parallèles à utiliser pour le traitement. Minimum 1, maximum 8. Le nombre effectif de workers sera limité par le nombre d'éléments à supprimer si celui-ci est inférieur au nombre de workers demandé |
Comportement
La commande supprime les entrées dans l'ordre suivant :
- Vérification de l'existence de l'entry
- Vérification des droits de suppression de l'agent
- Suppression de l'index de recherche Elasticsearch
- Suppression de l'entrée de la base de données
Si la suppression de l'index de recherche échoue, la suppression en base de données ne sera pas effectuée pour garantir la cohérence des données.
En mode parallèle, les identifiants sont répartis en chunks entre les différents workers. Chaque worker traite sa portion de manière indépendante et retourne les résultats via une communication inter-processus.
Résultats
La commande affiche pour chaque suppression :
- Le statut (SUCCESS ou FAILURE)
- L'identifiant de l'entrée
- Le message de résultat
En mode verbeux (option --verbose), un résumé est affiché en fin d'exécution avec :
- Le nombre de suppressions réussies
- Le nombre de suppressions échouées
- La liste des entrées non supprimées en base de données en raison d'un échec de suppression de l'index de recherche
Exemples
Suppression d'une entrée unique :
Suppression de plusieurs entrées depuis un fichier en mode séquentiel :
php bin/console mdm:entries:delete-entry --agentIdentifier="agent-identifier" --file="/path/to/ids.txt"
Suppression de plusieurs entrées en mode parallèle avec 8 workers :
php bin/console mdm:entries:delete-entry --agentIdentifier="agent-identifier" --file="/path/to/ids.txt" --parallel --workers=8
Suppression en mode parallèle avec affichage du résumé détaillé :
php bin/console mdm:entries:delete-entry --agentIdentifier="agent-identifier" --file="/path/to/ids.txt" --parallel -v