Olá a todos,
Depois de pesquisar o fórum com o máximo de minhas capacidades sem encontrar uma solução, estou solicitando suporte para uma situação estranha que surgiu após uma mudança recente do Datacenter da Digital Ocean.
Tínhamos todos os nossos uploads armazenados em um Bucket do Digital Ocean Spaces, no datacenter ams3.
Após dois grandes problemas de hardware e a consequente interrupção do serviço em pouco mais de um mês, no último fim de semana decidimos mover todos os nossos arquivos para o datacenter fra1.
Aqui estão as etapas que segui:
- Em preparação para a transferência, fiz o upload de todos os arquivos que tínhamos no ams3 (os 3 diretórios clássicos: originals, optimized e tombstone) para o novo bucket no fra1 usando o s3cmd.
- Acessei as configurações do fórum e configurei o novo endpoint para anexos, cdnl e bucket de backup.
- Iniciei um rebake completo de posts, esperando que corrigisse tudo de uma vez só.
Infelizmente, não foi isso que aconteceu. A maioria dos anexos foi “portada” corretamente, mas algumas centenas não foram. Não está claro para mim o que aconteceu, mas esses anexos faltantes foram movidos para o diretório tombstone.
Pensei que executar a tarefa rake rake uploads:recover_from_tombstone resolveria isso, mas não. Os arquivos são detectados, mas ao final da tarefa nenhum anexo é recuperado e as imagens ainda não estão visíveis nos posts.
Comecei a investigar um pouco mais e descobri que, ao executar UploadRecovery.new(dry_run: true).recover (encontrado pesquisando no meta) no console do Rails, eu recebia informações valiosas, como a URL do post, bem como a URL curta ou longa da imagem problemática.
Para as URLs retornadas no formato curto, escrevi um trecho de código em Python para “traduzir” o nome do arquivo de upload curto para o formato longo, para que eu pudesse verificar a presença do arquivo no bucket.
Fiz isso e posso confirmar que todos os arquivos faltantes estão lá, tanto no novo bucket quanto no antigo. Parte dos uploads faltantes encontrei no diretório tombstone, como esperado, mas alguns outros estranhamente ainda estão no diretório original. Os arquivos não estão corrompidos. Se eu acessá-los via URL, eles abrem corretamente em ambos os datacenters, e se eu fizer o dump deles localmente no meu Linux, consigo abri-los sem erros.
De alguma forma, o processo de recuperação de upload falha ao detectá-los e corrigir qualquer coisa que esteja desconfigurada no banco de dados. ![]()
Minhas perguntas são:
- Existe alguma maneira de entender por que, mesmo que os arquivos de upload estejam em
tombstone(ou emoriginal), a tarefa rake falha ao recuperá-los? - Qual seria o conjunto correto de etapas para garantir que, em caso de mudança de bucket ou mesmo transição da DO para outro ambiente compatível com AWS, todos os anexos sejam movidos e preparados corretamente para a troca? De forma mais geral, o que se deve fazer, passo a passo, nesses casos? Claramente, um rebake simples não é suficiente.

- O que a tarefa
posts:invalidate_broken_imagesfaz? Quero dizer, o que significa invalidar?
Obrigado antecipadamente. Estou lutando com isso há uma semana e realmente preciso resolver isso, senão vou enlouquecer
![]()
Observação: a sugestão de recarregar manualmente os 800+ anexos não é considerada uma resposta válida. Deve haver uma razão algorítmica… ![]()