Desde que esses plugins adicionados não estejam habilitados por padrão, pelo menos não para instâncias existentes, tudo bem. Mas em relação às mudanças nas dependências do gem e às múltiplas falhas de migração de banco de dados que enfrentamos, estou um pouco preocupado que algo possa estar invisivelmente quebrado ou perdido. Infelizmente, a reconstrução não gera logs a respeito, apenas diz que cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' saiu com código de erro, mas sem detalhes, nem nos logs .
isso parece estranho, você está executando o PG em um contêiner separado, ele tem o pgvector instalado?
Geralmente, quando as coisas falham, você pode rolar um pouco para cima e encontrar o erro, devido à sequência, muitas vezes os erros estão 100 linhas acima.
Apenas o contêiner Docker Discourse autônomo. Além disso, não estava totalmente correto, de fato há mais alguma saída sobre isso, mas nada que eu pudesse entender o suficiente:
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1454:in `migrate' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1261:in `up’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/migration.rb:1236:in `migrate' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.2/lib/active_record/tasks/database_tasks.rb:270:in `migrate’
/var/www/discourse/lib/tasks/db.rake:267:in `block (2 levels) in <main>' /var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize' /var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize’
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize' /var/www/discourse/lib/tasks/db.rake:242:in `block in ’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>' /usr/local/bin/bundle:25:in `load’
/usr/local/bin/bundle:25:in `’
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
I, [2025-07-29T20:36:15.074727 #1] INFO – : == 20180828095129 PushFixTopicEmbedAuthorsJob: migrating ==========
== 20180828095129 PushFixTopicEmbedAuthorsJob: migrated (0.0021s) =============
I, [2025-07-29T20:36:15.075331 #1] INFO – : Terminating async processes
I, [2025-07-29T20:36:15.075355 #1] INFO – : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 45
I, [2025-07-29T20:36:15.075376 #1] INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 112
2025-07-29 20:36:15.075 UTC [45] LOG: received fast shutdown request
112:signal-handler (1753821375) Received SIGTERM scheduling shutdown…
2025-07-29 20:36:15.091 UTC [45] LOG: aborting any active transactions
2025-07-29 20:36:15.092 UTC [45] LOG: background worker “logical replication launcher” (PID 59) exited with exit code 1
2025-07-29 20:36:15.092 UTC [54] LOG: shutting down
2025-07-29 20:36:15.105 UTC [54] LOG: checkpoint starting: shutdown immediate
112:M 29 Jul 2025 20:36:15.125 # User requested shutdown…
112:M 29 Jul 2025 20:36:15.125 * Saving the final RDB snapshot before exiting.
112:M 29 Jul 2025 20:36:15.247 * DB saved on disk
112:M 29 Jul 2025 20:36:15.247 # Redis is now ready to exit, bye bye…
2025-07-29 20:36:15.273 UTC [54] LOG: checkpoint complete: wrote 10 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.066 s, sync=0.046 s, total=0.181 s; sync files=9, longest=0.026 s, average=0.006 s; distance=36 kB, estimate=36 kB
2025-07-29 20:36:15.276 UTC [45] LOG: database system is shut down
## FAILED
Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ failed with return #<Process::Status: pid 635 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn’
`exec failed with the params {“cd”=>“$home”, “tag”=>“migrate”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}’
`bootstrap failed with exit code 1`
`** 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.`
Aliás, algo está quebrado com os blocos de código e cercas aqui. Nem adicionar aspas manualmente parece funcionar, nem selecionar várias linhas e pressionar o botão de código no editor. Ele transforma partes em código que não foram selecionadas.
Então, ele tentou uma migração para um plugin que não estava presente antes e não está habilitado? Alguma ideia de por que ele foi bem-sucedido após várias tentativas de reconstrução?
Estou um pouco confuso sobre por que falhou, mas consigo ver o problema aqui, estamos chamando código de aplicação de uma migração, o que é muito frágil.
Sim, como dito, após várias tentativas de reconstrução, finalmente funcionou. No último log bem-sucedido, não vejo mais essa migração em particular. Provavelmente, ela foi marcada como “migrada” apesar da falha, portanto, não foi mais tentada na próxima reconstrução?
A migração acabou de definir uma chave no redis, uma razão potencial para falha é que, de alguma forma, o código do plugin rss não foi carregado no momento, vamos rastrear isso para que outras pessoas não passem por isso.