@zogstrip Você se importa de revisar este PR, já que você tem o contexto da revisão recente do meu último PR nesta área? FIX: Make migrations from S3 more robust; fix bare URL migration by johnsonm · Pull Request #10093 · discourse/discourse · GitHub
Incluí nele as correções que tenho feito enquanto executo essa migração relativamente grande. Não tentei adicionar testes para cada correção; não tenho certeza de como injetar cada tipo de erro. Mas, pelo menos, a nova funcionalidade está testada.
@RGJ Acredito que meu PR, no estado atual, pode resolver todos os seus pontos, exceto os dois primeiros, embora eu não tenha certeza sobre o CDN. Meu site usava CDN e migrou vídeos que tinham URLs de CDN, mas isso pode ter sido um efeito colateral da nomenclatura com os Discourse Spaces. Se você tiver casos adicionais, espero que meu PR forneça uma estrutura fácil para adicionar ao regex e criar casos de teste para as variações adicionais.
Acho que está correto migrar primeiro por post, pois após migrar os uploads em um post, o post precisa ser rebaked para que o post cozido tenha as URLs corretas. Após terminar de migrar meus posts (o que pode levar menos de duas semanas agora que mudei minha limitação de taxa para verificar o comprimento da fila diretamente), vou analisar qualquer trabalho restante para fazer a limpeza.
Como vários posts podem compartilhar referências ao mesmo conteúdo se mais de uma pessoa fizer upload do mesmo arquivo, é necessário uma segunda passagem que verifique os dados cozidos em busca de URLs antigas e rebake esses posts para pegar a nova localização. Pode usar a mesma limitação de taxa para evitar sobrecarregar as filas.
Provavelmente não verei nenhum logotipo quebrado no makerforums, pois ajustamos a marcação depois de parar de colocar novo conteúdo no “s3” (para nós, DigitalOcean Spaces), mas provavelmente verei vários uploads ainda no S3, pelo menos para avatares. A migração de uploads não associados a um post deve ser iniciada apenas após todos os posts terem sido migrados, e provavelmente terei que documentar isso após terminar de migrar os uploads nos posts.
@pfaffman Vi Bizarre Problems with migrate_from_s3 - #5, que descreve erros que não se repetiram. Sem minhas correções no PR atual, os erros são silenciosamente ignorados, incluindo falhas de validação. Acredito que o trabalho aqui resolverá pelo menos alguns dos problemas que você viu naquela época.
@hosna Os problemas que você levantou em https://meta.discourse.org/t/what-does-rake-uploads-migrate-from-s3-exactly-do/97285 estão parcialmente ou completamente resolvidos até agora neste PR. Se não estiverem completamente resolvidos, adicionei testes que facilitarão a adição de novos testes para validar correções adicionais.
@sam, já que você colocou a etiqueta 2.6 no PR, estou assumindo que ele não será mesclado por pelo menos alguns dias; devo trazer meu trabalho de recurso de limitação de taxa para o PR junto com as correções? Ou você prefere manter correções e trabalho de recurso em PRs separados? Posso fazer de qualquer forma. O recurso de limitação de taxa está funcionando muito bem; estou migrando cerca de três vezes mais rápido, sem impacto na disponibilidade do site, agora que estou aguardando a fila do Sidekiq esvaziar, então faz sentido trazê-lo, acho, se for algo normalmente aceito em PRs. Caso contrário, precisarei aguardar o PR para mesclar o trabalho em que ele se baseia, então, de qualquer forma, seria bom ouvir sua opinião.
..
Refatorei meu patch de limitação de taxa de migração e o incluí no PR. Está funcionando na prática, e o sar indica que estou vendo quase zero tempo ocioso continuamente, enquanto o site continua funcionando, durante a migração ao vivo. Uma vantagem do modo em lote é que posso verificar novas versões do Discourse após cada lote completo de migrações; atualizei meu site para a 2.6.0beta1 na primeira oportunidade após o corte e tenho executado as migrações com sucesso na 2.6.0beta1 com meu PR de migração por cima desde a atualização.
Acredito que o PR está pronto para revisão agora; planejo enviar outro PR para as últimas etapas, mas colocar isso em prática melhorará a experiência geral de migração para todos, mesmo antes de eu terminar as últimas partes.