重複キーエラー ("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"

1か月未満前にリビルドしましたが、エラーはありませんでした。したがって、これを導入したものは最近のものと思われます。

「いいね!」 4

この最近のコミットと関係があるようです。

@david

「いいね!」 2

はい、その通りです。修正を準備しており、数分以内にマージされるはずです。報告していただきありがとうございます @axfelix

「いいね!」 9

ありがとうございます、早かったですね!

これをプルダウンするために何か特別なことをする必要がありますか?ランチャーの再構築を実行しているときに、Dockerのプルーンを実行した後でも、Caused by:\nActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_post_hotlinked_media_on_post_id_and_url_md5" が発生します。

修正は数秒前にtests-passedに反映されました。今すぐリビルドすれば、よりうまくいくはずです。結果をお知らせください。

「いいね!」 5

もう1つ、このエラーの原因となりうる箇所が見つかりました。もし最初の修正で解決しなかった場合は、こちらをお試しください :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