Aller au contenu

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

php bin/console mdm:entries:delete-entry

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

php bin/console mdm:entries:delete-entry --help
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 :

  1. Vérification de l'existence de l'entry
  2. Vérification des droits de suppression de l'agent
  3. Suppression de l'index de recherche Elasticsearch
  4. 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 :

php bin/console mdm:entries:delete-entry --agentIdentifier="agent-identifier" "entry-uuid"

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

Exemple de fichier txt

550e8400-e29b-41d4-a716-446655440000
123e4567-e89b-12d3-a456-426614174000
d942665a-8b83-4a18-8f64-850d5e1f2b3c
7f8c0508-3642-4217-8149-623141566432