Bonjour,
Je fais tourner une installation Discourse basée sur Docker. J’ai configuré les variables d’environnement AWS suivantes :
env:
AWS_REQUEST_CHECKSUM_CALCULATION: "WHEN_REQUIRED"
AWS_RESPONSE_CHECKSUM_VALIDATION: "WHEN_REQUIRED"
Lorsque je déclenche une sauvegarde depuis l’interface utilisateur pour qu’elle soit téléchargée sur S3, elle échoue pendant la phase de téléchargement multipart.
Le problème provient du fichier /var/www/discourse/lib/backup_restore/s3_backup_store.rb à cette ligne :
obj.upload_file(source_path, content_type: content_type)
Voici l’erreur exacte issue des journaux :
[2026-07-11 10:18:38 UTC] /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:186:in block (2 levels) in Aws::S3::MultipartFileUploader#upload_in_threads': undefined method downcase' for nil (NoMethodError)
k = "checksum_#{algorithm.downcase}".to_sym
J’ai pu corriger temporairement le problème en transmettant explicitement un checksum_algorithm à upload_file comme suit :
obj.upload_file(
source_path,
content_type: content_type,
checksum_algorithm: "CRC32"
)
Avec cette modification appliquée, le téléchargement fonctionne parfaitement. Cependant, comme il s’agit d’une modification manuelle à l’intérieur du conteneur, elle sera effacée la prochaine fois que je reconstruirai le conteneur.
Pourriez-vous examiner la correction de ce bug dans le code source principal ?
Merci !