Salut,
Récemment, je suis devenu le dernier administrateur et mainteneur d’une instance basique d’image Docker Discourse qui a été initialement installée sur notre serveur en 2021 (je pense) et principalement mise à jour par quelqu’un d’autre. Depuis un certain temps, peut-être dès le début, nous avons un problème avec les téléchargements de messages supprimés de manière logicielle qui ne sont pas orphelins et purgés, et j’essaie de résoudre ce problème à nouveau depuis quelques jours car les fichiers obsolètes continuent de s’accumuler et de gaspiller de l’espace de stockage. Nous n’utilisons pas S3 et nous avons suffisamment de stockage pour les téléchargements que nous souhaitons réellement conserver.
J’ai migré le fichier de sauvegarde complet de Discourse, y compris les téléchargements, vers un serveur de staging séparé pour les tests en reconstruisant avec notre app.yml en suivant les guides officiels d’installation de Docker Discourse, puis en restaurant la sauvegarde depuis la ligne de commande. Les deux installations semblent fonctionner de manière identique sans autres problèmes évidents, mais le problème de téléchargement persiste.
Je n’arrive pas à trouver d’erreurs pertinentes dans les journaux et Sidekiq exécute les tâches de nettoyage comme prévu. J’ai exécuté rake db:migrate sur la version de staging et reconstruit plusieurs fois, essayé de détruire définitivement des messages et vérifié les paramètres. Après avoir supprimé définitivement certains messages directement depuis la console Rails et essayé d’exécuter manuellement la tâche de nettoyage, j’ai remarqué que le répertoire des “tombstones” avait légèrement augmenté de taille à un moment donné et qu’il y avait déjà quelques fichiers au départ, donc le mécanisme devait fonctionner dans certaines situations, n’est-ce pas ? À en juger par la faible augmentation de taille, presque tous les fichiers obsolètes ne sont toujours pas détectés comme orphelins.
Les paramètres actuels pertinents du panneau d’administration sont listés ci-dessous. Puis-je régler les derniers à 0 pour ignorer efficacement les périodes de grâce pendant les tests ?
nettoyer les téléchargements = true
délai de grâce pour les téléchargements orphelins (heures) = 1
délai de grâce pour la purge des téléchargements supprimés (jours) = 1
Comment puis-je résoudre ce problème efficacement ? Je suis à l’aise avec la ligne de commande mais mes compétences en base de données sont rudimentaires, donc j’apprécierais vraiment quelques conseils pour éviter de passer en revue tous les détails possibles de la configuration du serveur sans savoir ce que je cherche à ce stade.
J’ai cherché et lu désespérément sur ce forum des cas similaires, mais il n’y en a que quelques-uns et ces fils de discussion semblent s’arrêter soit dans une impasse, soit à des solutions manuelles pour des fichiers uniques, donc pas directement adaptés à ce cas d’utilisation.
N’hésitez pas à me demander plus de détails si nécessaire, je fais de mon mieux pour résoudre ce problème définitivement.