Обновление не удалось из-за ошибки дублирования ключа ("index post hotlinked media on post id and url md5")

Автоматическая пересборка завершилась неудачей. Похоже на вариацию этой проблемы:

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"

Пересборка проводилась менее месяца назад без ошибок, значит, проблема появилась недавно.

4 лайка

Похоже, это связано с этим недавним коммитом?

@David

2 лайка

Да, всё верно. Исправление уже в работе, должно быть слито в ближайшие несколько минут. Спасибо за сообщение @axfelix

9 лайков

Спасибо, это было быстро!

Мне нужно что-то особенное сделать, чтобы получить эту версию? Я всё ещё получаю ошибку Caused by: ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_post_hotlinked_media_on_post_id_and_url_md5" при запуске пересборки лаунчера, даже после выполнения docker prune.

Исправление только что прошло тесты несколько секунд назад. Если вы пересоберёте сейчас, всё должно работать гораздо лучше. Дайте нам знать, как всё пойдёт.

5 лайков

Мы нашли ещё одно место, которое может вызывать эту ошибку. Так что, если первое исправление не помогло, это должно сработать :crossed_fingers:

(сейчас доступно в tests-passed)

4 лайка

На моем экземпляре для разработки миграция базы данных проходит успешно, но при восстановлении резервной копии из 2022-04-27-153103-v20220407195246.tar.gz происходит сбой:

                                                                                [361/9020]
Миграция базы данных...                                                                               ИСКЛЮЧЕНИЕ: /home/pfaffman/src/discourse-repos/discourse/lib/discourse.rb:126:in `exec': Не удалось выполнить миграцию базы данных.
Игнорирование /home/pfaffman/src/discourse-repos/discourse/db/schema_cache.yml, так как срок его действия истек. Текущая версия схемы — 20220407195246, но в файле кэша схемы указана версия 20220428094027.
rake aborted!
StandardError: Произошла ошибка, эта и все последующие миграции отменены:

за этим следуют еще подобные сообщения, включая следующие:

ActiveRecord::StatementInvalid: PG::DuplicateObject: ОШИБКА: тип "hotlinked_media_status" уже существует
1 лайк

Хочу просто добавить, что первое исправление сработало у нас после прохождения тестов!

2 лайка

Отлично, спасибо за подтверждение!

Я открыл PR с исправлением для этого случая:

4 лайка
Готово!
[УСПЕХ]
Восстановление завершено.

Спасибо!

2 лайка