Bonjour à tous,
Après avoir recherché dans le forum de mon mieux sans trouver de réponse satisfaisante, je sollicite l’assistance pour une situation étrange survenue suite à un récent changement de centre de données chez Digital Ocean.
En effet, nous avions stocké tous nos fichiers sur un bucket Digital Ocean Spaces dans le centre de données ams3. Après deux gros problèmes matériels et une interruption de service consécutive survenue en un peu plus d’un mois, nous avons décidé, le week-end dernier, de déplacer tous nos fichiers vers le centre de données fra1.
Voici les étapes que j’ai suivies :
- En préparation du transfert, j’ai téléchargé tous les fichiers présents sur ams3 (les 3 répertoires classiques : originals, optimized et tombstone) vers le nouveau bucket sur fra1 en utilisant s3cmd.
- Je suis allé dans les paramètres du forum et j’ai défini le nouveau point de terminaison (endpoint) pour les pièces jointes, le CDN et le bucket de sauvegarde.
- J’ai lancé un rebake complet des publications, en espérant que cela résoudrait tout d’un coup.
Malheureusement, ce n’était pas le cas. La majorité des pièces jointes ont été « portées » correctement, mais quelques centaines ne l’ont pas été. Je ne sais pas exactement ce qui s’est passé, mais ces pièces jointes manquantes ont été déplacées dans le répertoire tombstone.
J’ai pensé que lancer la tâche rake rake uploads:recover_from_tombstone réglerait le problème, mais non. Les fichiers sont détectés, mais à la fin de la tâche, aucune pièce jointe n’est récupérée et les images restent invisibles dans les publications.
J’ai creusé un peu plus et j’ai découvert que l’exécution de UploadRecovery.new(dry_run: true).recover (trouvé en explorant la section méta) dans la console Rails me fournissait des informations précieuses, telles que l’URL de la publication ainsi que l’URL courte ou longue de l’image problématique.
Pour les URLs retournées sous forme courte, j’ai donc écrit un petit script Python pour « traduire » le nom de fichier de téléchargement court en sa forme longue, afin de pouvoir vérifier la présence du fichier dans le bucket.
Je l’ai fait, et je peux confirmer que tous les fichiers manquants sont bien là, aussi bien dans le nouveau bucket que dans l’ancien. Une partie des téléchargements manquants se trouvait dans le répertoire tombstone, comme prévu, mais d’autres se trouvent étrangement toujours dans le répertoire original. Les fichiers ne sont pas corrompus. Si j’y accède via une URL, ils s’ouvrent correctement dans les deux centres de données, et si je les télécharge localement sur ma machine Linux, je peux les ouvrir sans erreur.
D’une manière ou d’une autre, le processus de récupération des téléchargements échoue à les prendre en charge et à corriger ce qui est défectueux dans la base de données. ![]()
Mes questions sont donc les suivantes :
- Y a-t-il un moyen de comprendre pourquoi, même si les fichiers de téléchargement sont dans
tombstone(ou dansoriginal), la tâche rake échoue à les récupérer ? - Quelle serait la bonne série d’étapes pour s’assurer que, en cas de changement de bucket ou même de transition de DO vers un autre environnement compatible AWS, toutes les pièces jointes sont déplacées et préparées correctement pour le basculement ? Plus généralement, que faut-il faire, étape par étape, dans un tel cas ? Clairement, un simple rebake ne suffit pas.

- Que fait la tâche
posts:invalidate_broken_images? Je veux dire, que signifie invalidate (invalider) ?
Merci d’avance. Je me bats avec ce problème depuis une semaine et j’ai vraiment besoin de le résoudre, sinon je vais devenir fou
![]()
PS : La suggestion de recharger manuellement les 800+ pièces jointes n’est pas considérée comme une réponse valable. Il doit y avoir une raison algorithmique… :laugh: