Falha na atualização devido a erro de chave duplicada ("índice de mídia hotlinkada no postagem id e url md5")

Falha na reconstrução automática, parece que variações neste problema:

2022-05-03 15:30:54.370 UTC [1262] discourse@discourse LOG:  duration: 1707.909 ms  statement: INSERT INTO post_hotlinked_media (post_id, url, status, upload_id, created_at, updated_at)
        SELECT
          post_id,
          obj.key AS url,
          'downloaded',
          obj.value::bigint AS upload_id,
          pcf.created_at,
          pcf.updated_at
        FROM post_custom_fields pcf
        JOIN json_each_text(pcf.value::json) obj ON true
        JOIN uploads ON obj.value::bigint = uploads.id
        WHERE name='downloaded_images'

ERROR: duplicate key value violates unique constraint \"index_post_hotlinked_media_on_post_id_and_url_md5\"

Reconstruí há menos de um mês sem erros, então o que quer que tenha introduzido isso parece ter sido recente.

4 curtidas

parece ter algo a ver com este commit recente?

@david

2 curtidas

Sim, é isso. Tenho uma correção em andamento, deve ser mesclada nos próximos minutos. Obrigado por relatar @axfelix

9 curtidas

Obrigado, foi rápido!

Preciso fazer algo especial para baixar isso? Ainda estou recebendo Causado por:\nActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_post_hotlinked_media_on_post_id_and_url_md5\" ao executar uma reconstrução do launcher, mesmo após fazer um Docker prune.

O conserto acabou de passar nos testes há alguns segundos. Se você reconstruir agora, deve funcionar muito melhor. Nos diga como foi.

5 curtidas

Encontramos mais um local que pode causar esse erro. Portanto, se a primeira correção não ajudou, esta deve ajudar :crossed_fingers:

(agora ativo em tests-passed)

4 curtidas

Na minha instância de desenvolvimento, a migração do banco de dados é bem-sucedida, mas se eu restaurar um backup de 2022-04-27-153103-v20220407195246.tar.gz, ele falha:

                                                                                [361/9020]
Migrating the database...                                                                               EXCEPTION: /home/pfaffman/src/discourse-repos/discourse/lib/discourse.rb:126:in `exec': Failed to migrat
e database.
Ignoring /home/pfaffman/src/discourse-repos/discourse/db/schema_cache.yml because it has expired. The cu
rrent schema version is 20220407195246, but the one in the schema cache file is 20220428094027.
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

seguido por mais disso com alguns destes:

ActiveRecord::StatementInvalid: PG::DuplicateObject: ERROR:  type \"hotlinked_media_status\" already exist
1 curtida

Só para informar que a primeira correção funcionou para nós após passar nos testes!

2 curtidas

Ótimo, obrigado por confirmar!

Abri um PR com uma correção para esse:

4 curtidas
Concluído!
[SUCESSO]
Restauração feita.

Obrigado!

2 curtidas