L'utilisation échoue en raison d'une erreur de clé dupliquée ("indexue le média hotlinké sur post id et url md5")

Une reconstruction automatique a échoué, il semble que ce soit des variations de ce problème :

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"

J’avais reconstruit il y a moins d’un mois sans erreurs, donc ce qui a introduit cela semble être récent.

4 « J'aime »

semble-t-il y avoir un lien avec ce commit récent ?

@david

2 « J'aime »

Oui, c’est ça. J’ai une correction en cours, elle devrait être fusionnée dans les prochaines minutes. Merci d’avoir signalé @axfelix

9 « J'aime »

Merci, c’était rapide !

Dois-je faire quelque chose de spécial pour récupérer cela ? J’obtiens toujours Caused by:\nActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_post_hotlinked_media_on_post_id_and_url_md5\" lors de l’exécution d’une reconstruction du lanceur, même après avoir effectué un élagage Docker.

La correction vient de passer les tests il y a quelques secondes. Si vous reconstruisez maintenant, cela devrait beaucoup mieux fonctionner. Faites-nous savoir comment cela se passe.

5 « J'aime »

Nous avons trouvé un autre endroit qui pourrait causer cette erreur. Donc, si la première correction n’a pas aidé, celle-ci devrait le faire :crossed_fingers:

(maintenant en ligne dans tests-passed)

4 « J'aime »

Sur mon instance de développement, la migration de la base de données réussit, mais si je restaure une sauvegarde à partir de 2022-04-27-153103-v20220407195246.tar.gz, cela échoue :

                                                                                [361/9020]
Migration de la base de données...                                                                               EXCEPTION : /home/pfaffman/src/discourse-repos/discourse/lib/discourse.rb:126:in `exec': Échec de la migration
de la base de données.
Ignoré /home/pfaffman/src/discourse-repos/discourse/db/schema_cache.yml car il a expiré. La version actuelle du schéma est 20220407195246, mais celle du fichier de cache du schéma est 20220428094027.
rake aborted!
StandardError : Une erreur s'est produite, cette migration et toutes les suivantes ont été annulées :

suivi de plus de cela avec certains de ces éléments :

ActiveRecord::StatementInvalid: PG::DuplicateObject: ERROR : le type « hotlinked_media_status » existe déjà
1 « J'aime »

Je voulais juste dire que le premier correctif a fonctionné pour nous après avoir passé les tests !

2 « J'aime »

Super, merci de confirmer !

J’ai ouvert une PR avec une correction pour celle-ci :

4 « J'aime »
Terminé !
[SUCCÈS]
Restauration terminée.

Merci !

2 « J'aime »