Alta para instâncias auto-hospedadas que utilizam armazenamento de backup compatível com S3, pois os backups agendados falham após a criação do arquivo.
Plataforma:
Discourse auto-hospedado na branch mais recente.
Versão ao vivo atual quando observado: v2026.4.0-latest
Ruby: 3.4.0
aws-sdk-s3: 1.182.0
Descrição:
Os backups para o Cloudflare R2 falham na etapa final “Enviando arquivo…”.
O despejo do banco de dados e a criação do arquivo local são concluídos com sucesso, mas o upload multipart do arquivo de backup finalizado falha.
Resultado real:
O backup falha com:
EXCEPTION: multipart upload failed: undefined method 'downcase' for nil
algorithm = resp.context.params[:checksum_algorithm]
k = "checksum_#{algorithm.downcase}".to_sym
Isso sugere que checksum_algorithm é nil no caminho de upload multipart.
Contexto adicional:
Existe um tópico recente semelhante no Meta para o Backblaze B2:
Além disso, as entradas do changelog do aws-sdk-s3 após a versão 1.182.0 parecem relevantes:
1.201.0: Corrige o upload multipart para respeitar o modo request_checksum_calculation quando_required
1.210.2: Recua para checksums de solicitação via cabeçalho ao usar endpoints personalizados ou provedores de endpoint para operações PutObject e UploadPart
O Discourse main atualmente ainda parece travar o aws-sdk-s3 na versão 1.182.0:
Não olho para isso há algum tempo, mas é assim que lidei com isso no passado:
Eles não consideram isso um bug, pois não pretendem dar suporte a todos os serviços do tipo S3 (nem tão compatíveis) no planeta.
Não me lembro exatamente para quais sites eu fazia isso, mas não recordo de ter alterado nada a respeito recentemente, então estou pensando que isso ainda é a melhor solução alternativa.
Acho que houve alguns outros tópicos sobre isso quando a AWS lançou a nova biblioteca que quebrou as ofertas de todos os outros.
Apliquei a solução alternativa diretamente no app.yml via after_bundle_exec, fixando o aws-sdk-s3 na versão 1.177.0 e o aws-sdk-core na 3.215, e então reconstruí o container. Depois disso, os backups manuais para o Cloudflare R2 voltaram a funcionar com sucesso, e os uploads pelo navegador que antes falharam também passaram a funcionar novamente.
No meu caso, as falhas apareciam como multipart upload failed: undefined method 'downcase' for nil no aws-sdk-s3 1.182.0.
Correção… essa solução alternativa funcionou para mim também, eu só precisei colocá-la em seu próprio bloco hooks: e não adicioná-la a um bloco de hooks existente, que bobagem minha.