Rake multisite:migrate está roto

Hoy a primera hora creé un tema de soporte en este contexto, pero no estaba seguro, así que realicé más pruebas e investigaciones al respecto. Parece que algo está muy mal: las reconstrucciones de multisite fallan con este error:

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
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Al intentar ejecutar rake multisite:migrate dentro del contenedor web_only en un sitio existente, aparece el siguiente error:

root@discourse-web-only:/var/www/discourse# rake multisite:migrate
Multisite migrator is running using 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) ==========

Es el mismo error donde se indica que falta una carga con id -6. Tengo este problema en al menos 3 instancias de prueba en diferentes proveedores, así que estoy bastante seguro de que se trata de un error, pero por favor corrígeme si me equivoco.

1 me gusta

Estoy construyendo temporalmente Discourse multisitio contra latest-release, lo que me permite iniciar correctamente, por lo que parece que el problema ocurrió en un commit después de que se lanzara la versión 2.5.0 beta 7.

@dan solucionó esto, ¡avísanos si sigue siendo un problema!

https://github.com/discourse/discourse/commit/2e1efbde52c311d12466692e0ee03e5c789cf2d8

3 Me gusta

Gracias por el reporte :+1: Lo solucioné en

https://github.com/discourse/discourse/commit/0384b6d9101bbc67abcf747d33cbc0ab41b7f65a

8 Me gusta

Acabo de reconstruir algunas instancias y todo parece estar bien. El problema está solucionado, así que este tema puede cerrarse :slight_smile:

Gracias por la solución @tgxworld

2 Me gusta