Rake multisite:migrate est cassé

Plus tôt aujourd’hui, j’ai créé un sujet de support dans ce contexte, mais n’étant pas certain, j’ai effectué d’autres essais et investigations. Il semble que quelque chose ne va vraiment pas ici. Les reconstructions multisite échouent avec cette erreur :

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate failed with return #<Process::Status: pid 5780 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate"
606e95cb68c244f04807369e0f1f677f54e745905f3c59436d0540e162692184
** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d'erreur précédents ; il peut y en avoir plusieurs.
./discourse-doctor peut aider à diagnostiquer le problème.

L’exécution de rake multisite:migrate à l’intérieur du conteneur web_only sur un site existant génère l’erreur suivante :

root@discourse-web-only:/var/www/discourse# rake multisite:migrate
Le migrateur multisite s'exécute avec 20 threads

Migrating secondsite
<Thread:0x000055b1bd94f308@/var/www/discourse/lib/tasks/db.rake:127 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
        9: from /var/www/discourse/lib/tasks/db.rake:132:in `block (2 levels) in execute_concurently'
        8: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:65:in `with_connection'
        7: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:286:in `with_connection'
        6: from /var/www/discourse/lib/tasks/db.rake:134:in `block (3 levels) in execute_concurently'
        5: from /var/www/discourse/lib/tasks/db.rake:156:in `block (2 levels) in <main>'
        4: from /var/www/discourse/lib/site_icon_manager.rb:24:in `ensure_optimized!'
        3: from /var/www/discourse/lib/site_icon_manager.rb:24:in `each'
        2: from /var/www/discourse/lib/site_icon_manager.rb:25:in `block in ensure_optimized!'
        1: from /var/www/discourse/lib/site_icon_manager.rb:73:in `resolve_original'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/core.rb:177:in `find': Couldn't find Upload with 'id'=-6 (ActiveRecord::RecordNotFound)
        4: from /var/www/discourse/lib/tasks/db.rake:132:in `block (2 levels) in execute_concurently'
        3: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:65:in `with_connection'
        2: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:286:in `with_connection'
        1: from /var/www/discourse/lib/tasks/db.rake:135:in `block (3 levels) in execute_concurently'
/var/www/discourse/lib/tasks/db.rake:136:in `rescue in block (3 levels) in execute_concurently': undefined local variable or method `exceptions' for main:Object (NameError)
rake aborted!
NameError: undefined local variable or method `exceptions' for main:Object
/var/www/discourse/lib/tasks/db.rake:136:in `rescue in block (3 levels) in execute_concurently'
/var/www/discourse/lib/tasks/db.rake:135:in `block (3 levels) in execute_concurently'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:286:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:65:in `with_connection'
/var/www/discourse/lib/tasks/db.rake:132:in `block (2 levels) in execute_concurently'
Caused by:
ActiveRecord::RecordNotFound: Couldn't find Upload with 'id'=-6
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/core.rb:177:in `find'
/var/www/discourse/lib/site_icon_manager.rb:73:in `resolve_original'
/var/www/discourse/lib/site_icon_manager.rb:25:in `block in ensure_optimized!'
/var/www/discourse/lib/site_icon_manager.rb:24:in `each'
/var/www/discourse/lib/site_icon_manager.rb:24:in `ensure_optimized!'
/var/www/discourse/lib/tasks/db.rake:156:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/db.rake:134:in `block (3 levels) in execute_concurently'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:286:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:65:in `with_connection'
/var/www/discourse/lib/tasks/db.rake:132:in `block (2 levels) in execute_concurently'
Migrating default
Tasks: TOP => multisite:migrate
(See full trace by running task with --trace)
Migrating thirdsite
== 20200611104600 CreateMissingBadgeIndexes: migrating ========================
-- execute("CREATE INDEX IF NOT EXISTS index_user_badges_on_user_id ON public.user_badges USING btree (user_id)")
   -> 0.0403s
-- execute("CREATE INDEX IF NOT EXISTS index_badges_on_badge_type_id ON public.badges USING btree (badge_type_id)")
   -> 0.0024s
== 20200611104600 CreateMissingBadgeIndexes: migrated (0.0477s) ===============

== 20200617144300 AddPublicFieldToPublishedPages: migrating ===================
-- execute("DELETE FROM schema_migrations WHERE version='20201006172700'\n")
   -> 0.0078s
-- execute("DELETE FROM schema_migrations WHERE version='20201006172701'\n")
   -> 0.0020s
-- execute("ALTER TABLE \"published_pages\" ADD COLUMN IF NOT EXISTS \"public\" boolean DEFAULT FALSE NOT NULL\n")
   -> 0.0262s
== 20200617144300 AddPublicFieldToPublishedPages: migrated (0.0383s) ==========

C’est la même erreur où il est indiqué que l’upload avec l’identifiant -6 est manquant. J’ai rencontré ce problème sur au moins 3 instances de test chez différents fournisseurs, je suis donc assez confiant pour qualifier cela d’anomalie, mais corrigez-moi si je me trompe.

1 « J'aime »

Je construis temporairement un Discourse multisite contre latest-release, ce qui me permet de démarrer avec succès. Il semble donc que le problème soit survenu dans un commit postérieur à la sortie de la version 2.5.0 bêta 7.

@dan a corrigé cela, faites-nous savoir si le problème persiste !

3 « J'aime »

Merci pour le signalement :+1: Corrigé dans

8 « J'aime »

Je viens de reconstruire quelques instances et tout semble bon. Le problème est résolu, ce sujet peut être fermé :slight_smile:

Merci pour la correction @tgxworld

2 « J'aime »