فشل الترقية بسبب خطأ مفتاح مكرر ("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:\nActiveRecord::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]
ترحيل قاعدة البيانات...                                                                               EXCEPTION: /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!
StandardError: حدث خطأ، تم إلغاء هذا الخطأ وجميع الأخطاء اللاحقة:

متبوعًا بالمزيد من ذلك مع بعض هذه:

ActiveRecord::StatementInvalid: PG::DuplicateObject: ERROR:  type \"hotlinked_media_status\" already exist
إعجاب واحد (1)

يسعدني أن أقول إن الإصلاح الأول نجح معنا بعد اجتيازه للاختبارات!

إعجابَين (2)

عظيم، شكراً للتأكيد!

لقد فتحت طلب سحب (PR) مع إصلاح لذلك:

4 إعجابات
انتهى!
[نجاح]
تمت الاستعادة.

شكرا!

إعجابَين (2)