중복 키 오류("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개의 좋아요

감사합니다, 정말 빠르셨네요!

이걸 받아오려면 특별히 해야 할 일이 있나요? Docker prune를 실행한 후에도 런서 재구성을 실행하면 여전히 Caused by: ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_post_hotlinked_media_on_post_id_and_url_md5" 오류가 발생합니다.

수정 사항이 몇 초 전 테스트 통과 상태가 되었습니다. 지금 다시 빌드하면 훨씬 더 잘 작동할 것입니다. 진행 상황 알려주세요.

5개의 좋아요

이 오류를 유발할 수 있는 또 다른 한 곳을 찾았습니다. 따라서 첫 번째 수정이 도움이 되지 않았다면, 이번 수정이 도움이 될 것입니다 :crossed_fingers:

(현재 tests-passed에 반영됨)

4개의 좋아요

개발 인스턴스에서는 데이터베이스 마이그레이션이 정상적으로 수행되지만, 2022-04-27-153103-v20220407195246.tar.gz에서 백업을 복원하면 실패합니다:

                                                                                [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:

그 후 다음과 같은 내용과 함께 더 많은 유사한 오류가 출력됩니다:

ActiveRecord::StatementInvalid: PG::DuplicateObject: ERROR:  type "hotlinked_media_status" already exist
1개의 좋아요

첫 번째 수정이 테스트를 통과한 후 우리에게도 효과가 있었다고 알려드리려고 들어왔습니다!

2개의 좋아요

확인해 주셔서 감사합니다!

해당 문제에 대한 수정을 담은 PR을 열었습니다:

4개의 좋아요
완료!
[성공]
복원 완료.

감사합니다!

2개의 좋아요