Bootstrap falló, por favor ayude :(

Estoy intentando actualizar y Discourse no logra iniciar. ¿Puede alguien aconsejar qué pasos debo seguir para volver a poner mi sitio en línea? Ejecuté discourse-doctor, pero tampoco pudo reconstruirlo. A continuación, pegaré los registros de mi (¿tercera?) tentativa:

 I, [2020-04-11T13:05:40.743940 #1]  INFO -- : Loading --stdin
I, [2020-04-11T13:05:40.750131 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-04-11T13:05:40.800464 #1]  INFO -- : Generando configuraciones regionales (esto puede tardar un poco)...
Generación completada.

I, [2020-04-11T13:05:40.800750 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-04-11T13:05:40.804473 #1]  INFO -- : 
I, [2020-04-11T13:05:40.804720 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-04-11T13:05:40.809297 #1]  INFO -- : 
I, [2020-04-11T13:05:40.809573 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-04-11T13:05:40.813859 #1]  INFO -- : 
I, [2020-04-11T13:05:40.814113 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-04-11T13:05:40.818749 #1]  INFO -- : 
I, [2020-04-11T13:05:40.819005 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-04-11T13:05:40.823141 #1]  INFO -- : 
I, [2020-04-11T13:05:40.823401 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres ya está ejecutándose, detén el contenedor ; exit 1
2020/04/11 13:05:40 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Conexión rechazada
I, [2020-04-11T13:05:40.831215 #1]  INFO -- : 
I, [2020-04-11T13:05:40.831436 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-04-11T13:05:40.837350 #1]  INFO -- : 
I, [2020-04-11T13:05:40.837549 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-04-11T13:05:40.843241 #1]  INFO -- : 
I, [2020-04-11T13:05:40.843486 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-04-11T13:05:40.848311 #1]  INFO -- : 
I, [2020-04-11T13:05:40.848643 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-04-11T13:05:40.853421 #1]  INFO -- : 
I, [2020-04-11T13:05:40.863897 #1]  INFO -- : Archivo > /etc/service/postgres/run  chmod: +x  chown: 
I, [2020-04-11T13:05:40.873965 #1]  INFO -- : Archivo > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2020-04-11T13:05:40.884485 #1]  INFO -- : Archivo > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2020-04-11T13:05:40.895036 #1]  INFO -- : Archivo > /root/upgrade_postgres  chmod: +x  chown: 
I, [2020-04-11T13:05:40.895478 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
I, [2020-04-11T13:06:09.192272 #1]  INFO -- : 
I, [2020-04-11T13:06:09.192593 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-04-11T13:06:09.197837 #1]  INFO -- : 
I, [2020-04-11T13:06:09.197992 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-04-11T13:06:09.228153 #1]  INFO -- : 
I, [2020-04-11T13:06:09.228375 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-04-11T13:06:09.233425 #1]  INFO -- : 
I, [2020-04-11T13:06:09.233760 #1]  INFO -- : > /root/upgrade_postgres
I, [2020-04-11T13:06:09.243357 #1]  INFO -- : 
I, [2020-04-11T13:06:09.243596 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2020-04-11T13:06:09.249007 #1]  INFO -- : 
I, [2020-04-11T13:06:09.249495 #1]  INFO -- : Reemplazando data_directory = '/var/lib/postgresql/10/main' por data_directory = '/shared/postgres_data' en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.272106 #1]  INFO -- : Reemplazando (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.272853 #1]  INFO -- : Reemplazando (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.273496 #1]  INFO -- : Reemplazando (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.274139 #1]  INFO -- : Reemplazando (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.274757 #1]  INFO -- : Reemplazando (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.275288 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-04-11T13:06:09.282029 #1]  INFO -- : 
I, [2020-04-11T13:06:09.282556 #1]  INFO -- : Reemplazando (?-mix:#?max_wal_senders *=.*) por max_wal_senders = $db_max_wal_senders en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.330309 #1]  INFO -- : Reemplazando (?-mix:#?wal_level *=.*) por wal_level = $db_wal_level en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.331016 #1]  INFO -- : Reemplazando (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.331655 #1]  INFO -- : Reemplazando (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.332347 #1]  INFO -- : Reemplazando (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement en /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.333020 #1]  INFO -- : Reemplazando (?-mix:^#local +replication +postgres +peer$) por local replication postgres  peer en /etc/postgresql/10/main/pg_hba.conf
I, [2020-04-11T13:06:09.333660 #1]  INFO -- : Reemplazando (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 en /etc/postgresql/10/main/pg_hba.conf
I, [2020-04-11T13:06:09.334205 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main
I, [2020-04-11T13:06:09.338659 #1]  INFO -- : > sleep 5
2020-04-11 13:06:09.481 UTC [49] LOG:  escuchando en la dirección IPv4 "0.0.0.0", puerto 5432
2020-04-11 13:06:09.482 UTC [49] LOG:  escuchando en la dirección IPv6 "::", puerto 5432
2020-04-11 13:06:09.544 UTC [49] LOG:  escuchando en el socket Unix "/var/run/postgresql/.s.PGSQL.5432"
2020-04-11 13:06:10.813 UTC [52] LOG:  el apagado del sistema de bases de datos fue interrumpido; última vez activo a las 2020-04-11 12:42:48 UTC
2020-04-11 13:06:12.356 UTC [52] LOG:  el sistema de bases de datos no se apagó correctamente; recuperación automática en curso
2020-04-11 13:06:12.416 UTC [52] LOG:  el rediseño comienza en 84/BD1A85B0
2020-04-11 13:06:12.446 UTC [52] LOG:  longitud de registro inválida en 84/BD7B3570: se esperaban 24, se obtuvieron 0
2020-04-11 13:06:12.446 UTC [52] LOG:  el rediseño finaliza en 84/BD7B3530
2020-04-11 13:06:12.446 UTC [52] LOG:  la última transacción completada fue a las 2020-04-11 11:53:53.069757+00
I, [2020-04-11T13:06:14.343128 #1]  INFO -- : 
I, [2020-04-11T13:06:14.343449 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2020-04-11 13:06:14.409 UTC [56] postgres@postgres FATAL:  el sistema de bases de datos está iniciándose
2020-04-11 13:06:14.411 UTC [57] postgres@template1 FATAL:  el sistema de bases de datos está iniciándose
createdb: no se pudo conectar a la base de datos template1: FATAL:  el sistema de bases de datos está iniciándose
I, [2020-04-11T13:06:14.413549 #1]  INFO -- : 
I, [2020-04-11T13:06:14.413822 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2020-04-11 13:06:14.493 UTC [68] postgres@discourse FATAL:  el sistema de bases de datos está iniciándose
psql: FATAL:  el sistema de bases de datos está iniciándose
I, [2020-04-11T13:06:14.495917 #1]  INFO -- : 
I, [2020-04-11T13:06:14.496250 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
2020-04-11 13:06:14.574 UTC [79] postgres@discourse FATAL:  el sistema de bases de datos está iniciándose
psql: FATAL:  el sistema de bases de datos está iniciándose
I, [2020-04-11T13:06:14.576284 #1]  INFO -- : 
I, [2020-04-11T13:06:14.576674 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
2020-04-11 13:06:14.655 UTC [90] postgres@discourse FATAL:  el sistema de bases de datos está iniciándose
psql: FATAL:  el sistema de bases de datos está iniciándose
I, [2020-04-11T13:06:14.658074 #1]  INFO -- : 
I, [2020-04-11T13:06:14.658635 #1]  INFO -- : Terminando procesos asíncronos
I, [2020-04-11T13:06:14.658722 #1]  INFO -- : Enviando INT a HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 49
2020-04-11 13:06:14.658 UTC [49] LOG:  recibido solicitud de apagado rápido
I, [2020-04-11T13:06:24.659800 #1]  INFO -- : HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid:49 no terminó limpiamente, ¡forzando la terminación!


FALLÓ
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' falló con el código de retorno #<Process::Status: pid 80 exit 2>
Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falló con los parámetros "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
3956a617d80571dd1ef87fcf7d23a319190bd909477e703ccb22cb25d0e137c8
** NO SE LOGRÓ INICIAR ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

Parece que tu base de datos está corrupta. ¿Tienes suficiente espacio en el disco? (Dudo que ese sea el problema, pero sería genial si lo fuera.)

La solución más sencilla es probablemente eliminar el directorio de la base de datos, lo que generará una nueva base de datos. Luego puedes restaurar desde tu copia de seguridad más reciente.

Para darles una actualización ahora que he salido del calor del momento: reiniciar el servidor permitió que la aplicación se reconstruyera. Esta fue una sugerencia de @merefield que encontré por casualidad en otro lugar de aquí y apliqué como un último recurso desesperado.

Así que, lo que sea que Postgres estuviera criticando sigue siendo un misterio para mí. Ahora tengo problemas nuevos, pero menos críticos. Por lo menos, no tuve que borrar mi gran base de datos.

@pfaffman, tenemos una cantidad considerable de almacenamiento; ni siquiera estamos cerca de alcanzar el límite allí.

Gracias por todos los comentarios; espero que mi dolorosa experiencia ayude a alguien más por ahí :slight_smile:

Hola,

recibimos el mismo mensaje en una reconstrucción para una actualización de versión…

… y pensamos que nos estaba pasando lo mismo, por primera vez.

… y dudamos en buscar el directorio de copia de seguridad ;]. Había una copia de seguridad reciente, así que nos relajamos un poco.

También queríamos compartir que, aunque no reiniciamos el servidor, esperamos un poco, fallamos en la reconstrucción por segunda vez con el mismo mensaje de error invalid record length at, pero ahora el proceso de actualización parece estar funcionando al intentarlo por tercera vez. El servidor tiene suficiente espacio en disco, pero actualmente está un poco saturado en cuanto a E/S.

Quizás esto ayude a otros que se encuentren en la misma situación. A partir de esta experiencia, aconsejaríamos a) mitigar el consumo excesivo de recursos en el sistema host antes de intentar otra reconstrucción, y b) no rendirse demasiado pronto.

Saludos cordiales,
Andreas.

Bueno, dice que se está procesando una recuperación, ¿así que tal vez puedas dejar que se recupere? Creo que tal vez reiniciarías el contenedor antiguo para que lo haga.

¿Se solucionó esto?

Todo funcionó bien y la actualización concluyó sin errores en el tercer intento. ¡Gracias y feliz año nuevo!

Problemas de apariencia similar que se han visto anteriormente se han solucionado ajustando un valor de tiempo de espera:

O esperando: