Bootstrap Container trava em su discourse -c 'bundle exec rake db:migrate'

Atualmente, estamos executando esta versão recente:

Ela ainda está rodando em nosso container de produção (sem problemas).

Estou tentando fazer o bootstrap com base nesta versão:

Tentei várias vezes hoje, e cada vez ele trava aqui:

Screen Shot 2021-02-11 at 5.32.24 PM

Verifiquei os logs no container de dados e no container do aplicativo standby (estamos fazendo o bootstrap) e não há erros ou problemas.

Cada vez que faço o bootstrap, ele trava nesta linha:

I, [2021-02-11T10:37:25.133098 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

Alguma ideia de onde procurar para ajudar a depurar isso?

Procurei em todos os logs que consegui pensar (em todos os containers) e não encontrei problemas.

Obrigado.

Informações adicionais:

Cada vez que ele trava e eu interrompo o processo de bootstrap com Ctrl+C, parece deixar um processo postmaster, que posso subsequently matar.

Aqui está um exemplo:

Atualização:

O bootstrap é reconstruído corretamente se eu comentar a linha “db:migrate” no template web.

Há algum problema estranho com “rails db:migrate” travando sem erros, algo que nunca experimentei antes.

Será que há um erro (ou algum problema subjacente) nesta migração recente?

Veja também:

Olá @neounix, estamos cientes de um problema com a migração que você vinculou e estamos trabalhando em uma correção agora mesmo.

2 curtidas

Olá @david,

Obrigado pela resposta!

Estava analisando a migração agora mesmo e, como “não sou especialista em migração de banco de dados do Discourse”, minha primeira impressão foi que isso poderia ser o problema?

 add_index :dismissed_topic_users, %i(user_id topic_id), unique: true

De qualquer forma, não tenho qualificação para me aprofundar mais em questões de migração do Discourse, então vou me retirar e ficar à disposição.

Obrigado novamente!

Podemos abortar com segurança a Migração sem perda de dados e voltar alguns commits?

Funcionou.

1 curtida

Ei @neounix,

Desculpe por incluir essa migração pesada e com problemas no repositório de código. Essas alterações foram revertidas, então uma nova implantação deve funcionar corretamente:

https://github.com/discourse/discourse/pull/12058

4 curtidas

Olá @kris.kotlarek,

Obrigado pela atualização:

Tendo a concordar que essa “migração pesada” muito provavelmente requer revisão adicional e testes rigorosos de desenvolvimento em uma configuração de teste com um banco de dados grande antes de ser mesclada ao núcleo. Por sorte do nosso site, eu sempre inicializo em paralelo com a produção, então não sofremos nenhuma queda durante as falhas da migração, então sem preocupações do nosso lado. Obrigado por reverter tão rapidamente.

Apenas para seu conhecimento (apenas sendo tecnicamente preciso, desculpe por isso…), verifiquei o banco de dados após reconstruir agora e o processo de “reversão” não excluiu a tabela do banco de dados, sem grandes problemas, apenas para seu conhecimento:

discourse=> \d dismissed_topic_users

                                        Table "public.dismissed_topic_users"
   Column   |            Type             | Collation | Nullable |                      Default                      
------------+-----------------------------+-----------+----------+---------------------------------------------------
 id         | bigint                      |           | not null | nextval('dismissed_topic_users_id_seq'::regclass)
 user_id    | integer                     |           |          | 
 topic_id   | integer                     |           |          | 
 created_at | timestamp without time zone |           |          | 
Indexes:
    "dismissed_topic_users_pkey" PRIMARY KEY, btree (id)
    "index_dismissed_topic_users_on_user_id_and_topic_id" UNIQUE, btree (user_id, topic_id)

Obrigado novamente pelo seu trabalho duro nisso e por reverter a migração tão rapidamente.

2 curtidas

Esta migração está funcionando perfeitamente agora, com base no último commit:

4 curtidas

Este tópico foi automaticamente fechado após 6 dias. Novas respostas não são mais permitidas.