Tras la actualización, el sitio no se abrió y la base de datos de respaldo no se cargó

Actualicé el sitio y luego comenzó a dar errores de nginx. No pude acceder al sitio. Hiciera lo que hiciera, no funcionaba. Así que hice una nueva instalación e intenté agregar la comida de ayer. Sin embargo, tampoco tuve éxito en eso. Obtengo el siguiente error al instalar la copia de seguridad:

error completo:

CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ERROR:  parámetro no reconocido "dims"
EXCEPTION: psql falló: ERROR:  parámetro no reconocido "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>'
Intentando revertir...
Revertiendo...
Limpiando cosas...
Eliminando funciones del esquema discourse_functions...
Eliminando el directorio tmp '/var/www/discourse/tmp/restores/default/2024-02-18-120937'...
Reanudando sidekiq...
Marcando la restauración como finalizada...
Notificando a 'system' el fin de la restauración...
¡Terminado!
[FALLIDO]
Restauración completada.

al actualizar app.yml se usaron los códigos de compilación de 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

He estado revisando esto con @kuaza debido a su experiencia con mi plugin.

Eliminamos el índice problemático de dump.sql que estaba causando el error anterior y lo restauramos.

Había un script actualizado para eliminar este índice, pero algunos usuarios del plugin podrían no haber visto la actualización.

Ahora tenemos una acumulación, pero no hay conexión desde el navegador.

Hemos vuelto a poner en marcha el contenedor sin el índice problemático y se ha eliminado todo el script antiguo en app.yml para construir pgembedding, por lo que está limpio pero con plugins.

el contenedor está en marcha; puedes entrar sin problema.

psql aparentemente en marcha; puedes iniciar el prompt de la base de datos dentro del contenedor sin problema.

dentro del contenedor puedes abrir rails c sin problema.

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

no muestra ningún mensaje de error obvio.

Actualmente estoy perplejo.

¿Alguna idea sobre otras cosas que revisar?

1 me gusta

Me perdí una verificación…

entrando en el contenedor y haciendo esto:

curl 0.0.0.0:3000

Voy a intentar eso a continuación…

2 Me gusta

Cuando haces esto, aparecen los códigos de la página de configuración HTML. Creo que el problema está causado por el DNS. Y esta tontería me está destrozando.

Cuando ejecuté esto, parecía estar funcionando, pero en realidad el problema era que el servidor web no funcionaba y no podemos entenderlo de esta manera. Cuando ingresamos al contenedor y ejecutamos este código, podemos ver si nginx está funcionando o no:

nginx -t

Sin embargo, me gustaría responder al problema en este tema copiando la solución de tu mensaje. El problema de nginx es completamente diferente, lo estoy probando en un dominio separado con una instalación nueva. Si vuelve a dar un error, abriré un problema separado y lo informaré.

El problema de que la copia de seguridad no funcione en el tema es causado por una tabla o registro que ya no se utiliza. Creo que era un registro que el plugin del chatbot ya no utiliza, pero no se eliminó durante la actualización. Creo que el amigo autor del plugin lo ha resuelto, puedes estar tranquilo :slight_smile: Eliminé la línea de error, la empaqueté de nuevo y la instalé desde el panel de administración, funciona sin ningún problema. O también puedes descargarlo desde el servidor:

Explicación de cómo arreglar un archivo de plugin corrupto:

  • Descomprime una copia de seguridad: tar -xvzf foo.tar.gz
  • Descomprime el archivo dump.sql
  • Elimina las líneas problemáticas que crean el índice no deseado:
--
-- 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');
  • Comprime de nuevo el archivo dump.sql
  • Combínalo en un directorio con tu carpeta de subidas
  • Comprime todo de nuevo
  • Restaura manualmente este archivo

Si te da el error de una tabla diferente, creo que se solucionará si eliminas la tabla que contiene ese registro utilizando el método anterior.

Mi sitio, en el que trabajé duro y que estaba empezando a crecer, estuvo caído durante dos días. No olvidemos una noche y un día sin dormir. Siempre existe la posibilidad de que tales eventos nos sucedan. No olvides hacer una copia de seguridad y verificar que la copia de seguridad funcione. Me gustaría agradecer a mi hermano @merefield por ayudarme durante este proceso. Aprendimos cosas nuevas juntos.

3 Me gusta

Este método me funcionó cuando estaba recibiendo el mismo error. Gracias por publicar esto.

1 me gusta

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