Problema de atualização: Fórum quebrado

Olá,

Tenho um problema com a última atualização. Meu fórum está quebrado.
Tenho esta mensagem no SSH.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 2472 exit 1>
Localização da falha: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
3d52a3f170f714bf580dcd30effbf9306fbf6e0ef1f786cf9dd4e326b066e6a4
** FALHA AO INICIALIZAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Você tem alguma ideia de onde está o problema e como consertá-lo?

Muito obrigado.

2 curtidas

Você poderia rolar para cima e verificar se há erros mais específicos e ver o que ele diz?

1 curtida

Olá,

aqui está um pastebin de todo o processo. Há obviamente alguns erros com o postgresql, mesmo que eu não tenha certeza se o problema vem de lá

https://pastebin.com/nqLWDRAC

Como você instalou? Qual postgres você está usando?

Causado por:
PG::InsufficientPrivilege: ERRO:  permissão negada para criar a extensão "unaccent"
DICA:  Deve ser superusuário para criar esta extensão.
1 curtida

Eu fiz login como root.
Não posso ter privilégios melhores :slight_smile:

Não sei sobre o postgres
“O programa ‘pg_config’ pode ser encontrado nos seguintes pacotes:”

O fórum está online.
Eu reinicio o servidor.

O primeiro problema está corrigido, mas tenho um segundo.

Eu tenho este erro “500 Internal Server Error” quando crio ou respondo a uma postagem.

Você tem alguma ideia de como corrigir?

Olá,

Encontrei este erro no arquivo de log

ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR: transação atual abortada, comandos ignorados até o fim do bloco de transação) app/models/post.rb:973:in `block in link_post_uplo
ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR:  transação atual abortada, comandos ignorados até o fim do bloco de transação
)
app/models/post.rb:973:in `block in link_post_uploads'
app/models/post.rb:972:in `link_post_uploads'
lib/post_creator.rb:217:in `block in create'
lib/post_creator.rb:409:in `block (2 levels) in transaction'
lib/post_creator.rb:408:in `block in transaction'
lib/distributed_mutex.rb:33:in `block in synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:14:in `synchronize'
lib/post_creator.rb:407:in `transaction'
lib/post_creator.rb:205:in `create'
lib/new_post_manager.rb:285:in `perform_create_post'
lib/new_post_manager.rb:223:in `perform'
app/controllers/posts_controller.rb:193:in `create'
app/controllers/application_controller.rb:400:in `block in with_resolved_locale'
app/controllers/application_controller.rb:400:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:358:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'

Você tem alguma ideia do que pode ser o problema?

Esta é uma instalação padrão?

sim,

uso o fórum há 6 anos.

A última versão instalada é a 2.9.0.beta3

Você tem algum plugin instalado? Talvez poste seu app.yml?

Qual é a sua versão do postgres? Basta digitar launcher enter app e depois psql -V

2 curtidas

Olá,

Eu testei, mas o problema original voltou

Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 2458 exit 1>
Localização da falha: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
45d3621c802f025ef80ad34e77ec3318a48677b0de0134210120ef7690b6e6f4
** FALHA AO INICIALIZAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Acho que houve um problema ao atualizar porque não havia espaço suficiente no disco rígido. Liberei algum espaço e agora tenho 67% livres. No entanto, existe um problema existente, mas qual?

O programa ‘psql’ não está instalado no momento.
Eu tenho que instalá-lo?

Você fez

  launcher enter app

Antes do comando psql?

1 curtida

É o mesmo,
Tentei instalar, mas recebi esta mensagem

E: O pacote libperl5.22 precisa ser reinstalado, mas não consigo encontrar um arquivo para ele.

Dei outra olhada no seu logfile do pastebin. Diz Postgres 10.
Você tem certeza de que esta é uma configuração padrão que foi instalada de acordo com discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub?

1 curtida

Já disse antes, o fórum existe há muitos anos e nunca tive grandes problemas. Geralmente, uma reconstrução ou atualização foi suficiente para colocar tudo funcionando novamente.
Sim, é instalação normal.

Minha última tentativa.

Você poderia, por favor, executar

cd /var/discourse
./launcher enter app
psql -V

e copiar tudo isso em uma resposta, incluindo os comandos e a saída?

1 curtida
psql (PostgreSQL) 10.19 (Debian 10.19-1.pgdg110+1)

Ok, ótimo. Esse é um resultado diferente do da última vez.
Então, por favor, faça o seguinte agora:

cd /var/discourse
git pull
./launcher rebuild app

E se você tiver erros, por favor, poste a SAÍDA INTEIRA, incluindo seus comandos, em uma resposta (ou no Pastebin).

1 curtida

Curiosamente, experimentei o mesmo erro ou um erro semelhante. Executando no Discourse 2.9.0.beta2 e tentei atualizar para o ß3. Desativei todos os plugins, exceto docker_manager para ./launcher rebuild app. Executando em um banco de dados PGSQL externo na versão:

$ psql --version
psql (PostgreSQL) 14.1 (Ubuntu 14.1-1.pgdg18.04+1)

Posso reiniciar o contêiner via ./launcher restart app após a falha, mas quando as respostas retornam um erro 500.

O erro final durante a reconstrução/atualização é:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 658 exit 1>
Localização da falha: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap falhou com código de saída 1
** FALHA AO INICIALIZAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.

Os erros significativos reais acima podem ser encontrados aqui: https://p153.p0.n0.cdn.getcloudapp.com/items/jkuvPekN/feb38236-3b84-410e-8fac-d1864d02ba69.txt?v=eb1d15e029cb07a73300d8ec07318876

Estou tendo dificuldade em acreditar que este seja um problema real de permissão e hesito em dar ao usuário do Discourse do banco de dados permissão de superusuário/root para o pgsql.

Alguma outra ideia sobre o que pode estar acontecendo aqui com uma quebra tão recente?