Após a atualização, o site não abriu e o banco de dados de backup não foi carregado

Atualizei o site, então ele começou a apresentar erros do nginx. Não consegui acessar o site. Não importa o que eu fizesse, não funcionava. Então fiz uma nova instalação e tentei adicionar a comida de ontem. No entanto, também não fui bem-sucedido nisso. Recebo o seguinte erro ao instalar o backup:

error complete:

CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ERROR:  unrecognized parameter "dims"
EXCEPTION: psql failed: ERROR:  unrecognized parameter "dims"
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:451:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:28:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:20:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
Rolling back...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2024-02-18-120937' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

ao atualizar o app.yml usado para construir os códigos do pgembeddings

hooks:
  after_code:
    - exec:
        cd: $home
        cmd:
          - sudo apt-get install wget ca-certificates
    - exec:
        cd: $home
        cmd:
          - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    - exec:
        cd: $home
        cmd:
          - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
    - exec:
        cd: $home
        cmd:
          - apt-get update
    - exec:
        cd: $home
        cmd:
          - apt-get -y install -y postgresql-server-dev-${PG_MAJOR}
    - exec:
        cd: $home/tmp
        cmd:
          - git clone https://github.com/neondatabase/pg_embedding.git
    - exec:
        cd: $home/tmp/pg_embedding
        cmd:
          - make PG_CONFIG=/usr/lib/postgresql/13/bin/pg_config
    - exec:
        cd: $home/tmp/pg_embedding
        cmd:
          - make PG_CONFIG=/usr/lib/postgresql/13/bin/pg_config install
    - exec:
        cd: $home
        cmd:
          - su postgres -c 'psql discourse -c "create extension if not exists embedding;"'
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-question-answer.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-restricted-replies.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-follow.git
          - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-no-bump.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/spirobel/discourse-matheditor.git
          - git clone https://github.com/discourse/discourse-google-one-tap.git
          - git clone https://github.com/merefield/discourse-chatbot.git
          - git clone https://github.com/discourse/discourse-ai.git
#          - git clone https://github.com/paviliondev/discourse-custom-wizard.git
          - git clone https://github.com/discourse/discourse-reactions.git
#          - git clone https://github.com/discourse/discourse-subscriptions.git

Eu analisei isso com o @kuaza por causa do histórico dele com meu plugin.

Removemos o índice problemático do dump.sql que estava causando o erro acima e o restauramos.

Havia um script atualizado para remover este índice, mas alguns usuários do plugin podem não ter visto a atualização.

Agora temos um build, mas não há conexão do navegador.

Temos o contêiner funcionando novamente sem o índice problemático e todo o script antigo no app.yml para construir o pgembedding foi removido, então está limpo, mas com plugins.

O contêiner está funcionando - você pode acessá-lo sem problemas.

O psql aparentemente está funcionando - você pode acessar o prompt do banco de dados dentro do contêiner sem problemas.

Dentro do contêiner, você pode abrir o rails c sem problemas.

/var/discourse/shared/standalone/log/rails# tail -n 200 production.log

não mostra nenhuma mensagem de erro óbvia.

Estou atualmente sem ideias.

Alguma sugestão de outras coisas para verificar?

1 curtida

Perdi uma verificação…

entrando no container e fazendo isso:

curl 0.0.0.0:3000

Vou tentar isso em seguida…

2 curtidas

Quando você faz isso, os códigos da página de configuração HTML aparecem. Acho que o problema é causado pelo DNS. E essa besteira está me destruindo.

Quando executei isso, parecia estar funcionando, mas na verdade o problema era que o servidor web não estava funcionando e não podemos entendê-lo dessa forma. Quando entramos no contêiner e executamos este código, podemos ver se o nginx está em execução ou não:

nginx -t

No entanto, gostaria de responder ao problema neste tópico copiando a solução da sua mensagem. O problema do nginx é completamente diferente, estou testando em um domínio separado com uma instalação nova. Se der erro novamente, abrirei um problema separado e o relatarei.

O problema do backup não funcionar no assunto é causado por uma tabela ou registro que não é mais utilizado. Acho que era um registro que o plugin chatbot não usa mais, mas isso não foi excluído durante a atualização. Acho que o amigo autor do plugin resolveu isso, você pode ficar tranquilo :slight_smile: Eu deletei a linha de erro, reempacotei e instalei pelo painel de administração, funciona sem nenhum problema. Ou você também pode baixar do servidor:

Explicação de como corrigir o arquivo de plugin corrompido:

  • Descompacte um backup: tar -xvzf foo.tar.gz
  • Descompacte o arquivo dump.sql
  • remova as linhas ofensivas que criam o índice indesejado:
--
-- TOC entry 8020 (class 1259 OID 84313)
-- Name: hnsw_index_on_chatbot_post_embeddings; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX hnsw_index_on_chatbot_post_embeddings ON public.chatbot_post_embeddings_old USING hnsw (embedding) WITH (dims='1536', m='64', efconstruction='64', efsearch='64');
  • compacte novamente o arquivo dump.sql
  • combine-o em um diretório com sua pasta de uploads
  • compacte tudo de volta
  • restaure manualmente este arquivo

Se der o erro de uma tabela diferente, acho que será corrigido se você excluir a tabela que contém esse registro usando o método acima.

Meu site, no qual trabalhei duro e estava começando a crescer, ficou fora do ar por dois dias. Não vamos esquecer uma noite e um dia sem dormir. Sempre existe a possibilidade de tais eventos acontecerem conosco. Não se esqueça de fazer um backup e verificar se o backup está funcionando. Gostaria de agradecer ao meu irmão @merefield por me ajudar durante este processo. Aprendemos coisas novas juntos.

3 curtidas

Este método funcionou para mim quando eu estava tendo o mesmo erro. Obrigado por postar isso.

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.