# ToS3MigrationError: uploads não migrados para S3, resultando em anexos corrompidos. Como corrigir este erro?

**URL:** https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115
**Category:** Support
**Created:** [6 Julho , 2021 02:42 UTC](https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115 "2021-07-06T02:42:16Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![ipoopfool](https://avatars.discourse-cdn.com/v4/letter/i/d78d45/32.png) [@ipoopfool](https://meta.discourse.org/u/ipoopfool)
#### Post date: [6 Julho , 2021 02:42 UTC](https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115/1 "2021-07-06T02:42:17Z")

</div>

> FileStore::ToS3MigrationError: 182 de 21512 uploads não foram migrados para o S3. A migração para o S3 falhou no banco de dados ‘default’.

> em seguida, um rastreamento de pilha de ‘raise\_or\_log’, ‘migration\_successful?’, ‘migrate\_to\_s3’, ‘migrate’, ‘block in migrate\_to\_s3\_all\_sites’

Encontrei esses erros duas vezes ao executar a tarefa `uploads:migrate_to_s3`. Cerca de 1% dos arquivos não foram migrados com sucesso, resultando em anexos quebrados no site após uma rebake. Todos parecem ser arquivos mais antigos, dos primeiros meses após a criação desta instância do Discourse.

Ao investigar o bucket do S3, os arquivos parecem ter sido carregados com sucesso para o S3; eles apenas não estão vinculados corretamente após a rebake.

* * *

Reexecutar a migração (antes de outra rebake) parece ter resolvido o problema por algum motivo. O mesmo erro ainda ocorre durante a tarefa migrate\_to\_s3.

No entanto, se eu executar a rebake novamente, os links dos anexos voltam a quebrar.

Acho que esses não são erros, mas incluirei a saída durante a rebake:

```plaintext
/var/www/discourse/lib/file_store/base_store.rb:6: warning: already initialized constant FileStore::BaseStore::UPLOAD_PATH_REGEX
/var/www/discourse/lib/file_store/base_store.rb:6: warning: previously definition of UPLOAD_PATH_REGEX was here
/var/www/discourse/lib/file_store/base_store.rb:7: warning: already initialized constant FileStore::BaseStore::OPTIMIZED_IMAGE_PATH_REGEX
/var/www/discourse/lib/file_store/base_store.rb:7: warning: previous definition of OPTIMIZED_IMAGE_PATH_REGEX was here

```

* * *

Executar `rake posts:missing_uploads` ou `PostCustomField.where(name: Post::MISSING_UPLOADS)` não revela nenhum problema, então isso parece não estar relacionado.

---

<div class="post-metadata">

### Author: ![ipoopfool](https://avatars.discourse-cdn.com/v4/letter/i/d78d45/32.png) [@ipoopfool](https://meta.discourse.org/u/ipoopfool)
#### Post date: [7 Julho , 2021 05:40 UTC](https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115/2 "2021-07-07T05:40:29Z")

</div>

Meu problema pode estar relacionado a esta questão: [Migrate\_to\_S3 Fails on Rebake - #12 by evenif](https://meta.discourse.org/t/migrate-to-s3-fails-on-rebake/151486/12?u=ipoopfool)

Vou ver o que descubro e talvez fechar isso e mover a conversa para lá.

---

<div class="post-metadata">

### Author: ![ipoopfool](https://avatars.discourse-cdn.com/v4/letter/i/d78d45/32.png) [@ipoopfool](https://meta.discourse.org/u/ipoopfool)
#### Post date: [13 Julho , 2021 00:15 UTC](https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115/3 "2021-07-13T00:15:51Z")

</div>

Os anexos/carregamentos antigos e quebrados aparecem como  
`[{nome do arquivo}|attachment](/uploads/default/original/2X/6/{hash sha1 + extensão})` no texto bruto da postagem. Isso é processado como `href="/uploads/default/original/2X/6/{hash sha1 + extensão}"`, o que quebra os anexos de arquivo, mas não as imagens.

Posteriormente, anexos funcionais aparecem como `[{nome do arquivo}|attachment](upload://{sha1 para base62 + extensão})` e são processados como `href="/uploads/short-url/{sha1 para base62 + extensão}`.

Escrevi um pequeno código em Ruby para percorrer todas as postagens no período problemático conhecido e substituir todas as URLs de carregamento antigas pela versão mais recente. Utilizei a função `base62_sha1` do modelo `Upload` para converter o hash sha1 no nome de arquivo esperado que as URLs curtas do Discourse aguardam.

Isso fez com que os anexos funcionassem. Em seguida, executei outro rebake apenas para confirmar a correção, e parece que ainda está funcionando. Parece que o problema residia apenas em `Post.raw` e não tinha nada a ver com `Upload`.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [12 Agosto , 2021 00:16 UTC](https://meta.discourse.org/t/tos3migrationerror-uploads-not-migrated-to-s3-leading-to-broken-attachments-how-to-fix-this-error/196115/4 "2021-08-12T00:16:23Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
