Aller au contenu

Supprimer des documents 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 un ou plusieurs fichiers de type BinaryContent sans passer par l'api ou l'application front-end. 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 mdf-api

php bin/console mdm:content:delete-binary

Arguments

La commande pour supprimer des binary 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:content:delete-binary --help
Nom de l'argument Abbréviation Obligatoire Valeur par défaut Détail
ids Ø Non Ø Liste des identifiants (UUID) des contenus binaires à supprimer. 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 contenus binaires concernés
file f Non Ø 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 contenus binaires dans l'ordre suivant :

  1. Vérification de l'existence du contenu binaire
  2. Vérification des droits de suppression de l'agent
  3. Suppression de l'index de recherche Elasticsearch
  4. Suppression du contenu binaire 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 du contenu binaire
  • 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 éléments non supprimés en base de données en raison d'un échec de suppression de l'index de recherche

Exemples

Suppression d'un contenu binaire unique :

php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" "binary-content-uuid"

Suppression de plusieurs contenus binaires depuis un fichier en mode séquentiel :

php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" --file="/path/to/ids.txt"

Suppression de plusieurs contenus binaires en mode parallèle avec 8 workers :

php bin/console mdm:content:delete-binary --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:content:delete-binary --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