Renommer et republier un contenu pendant un export lève des exceptions
Opened this issue · 1 comments
Sentry rapporte l'erreur suivante :
FileNotFoundError: [Errno 2] No such file or directory: '/opt/zds/data/contents-public/un-contenu/extra_contents'
File "zds/tutorialv2/management/commands/publication_watchdog.py", line 67, in run
publicator.publish(md_file_path, base_name)
File "zds/tutorialv2/publication_utils.py", line 445, in publish
shutil.copy2(pdf_file_path, published_content_entity.get_extra_contents_directory())
la ligne en question :
zds-site/zds/tutorialv2/publication_utils.py
Line 445 in 30d805b
Ce qu'il s'est passé :
- Le contenu
Un contenu
a été publié - Les demandes d'export ont été créées et ont commencé à être traitées, par exemple l'export en PDF
- Pendant ce temps, le contenu a été renommé en
Un contenu plus précis
et publié dans la foulée - Le changement de titre (à vérifier, mais plus précisément : la publication après un changement de titre) change le nom du dossier de la version publique du contenu (on passe de
contents-public/un-contenu
àcontents-public/un-contenu-plus-precis
). Cependant, l'export en cours est en train de travailler surcontents-public/un-contenu
, qui n'existe plus et va donc causer des erreurs de fichiers/dossiers non trouvés.
Solution
Vu tous les problèmes possibles qui peuvent arriver si on modifie la version publique d'un contenu pendant que le contenu est en train d'être exporté, je me demande s'il ne faut pas imaginer une sorte de verrou qui empêcherait de publier un contenu tant qu'un export est en cours.
Est-ce que ça serait possible d'interrompre l'export en cours pour relancer ensuite avec le nouveau ? Ça me paraît plus facile à l'usage. Si on remplace la version en ligne, il n'y a de toute façon pas de raison d'avoir l'export de la version précédente et niveau expérience utilisateur, c'est fluide.