Foro caído por reconstrucciones fallidas en Tests-Pass

Continuando la discusión de Actualización de PostgreSQL 13:

Tuvimos problemas al actualizar 2.7.0beta1 Tests-Pass para eliminar algunos plugins problemáticos.

Edité nuestro archivo app.yml para permanecer en PostgreSQL 12. La reconstrucción falló y estoy viendo:

FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 1637 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
I, [2020-12-11T18:36:32.257585 #1]  INFO -- : Terminating async processes
df2fcc37c368d13eac3b4a6db4b592028405a0ea91ff39fb8cbb8bcbdc4846fd
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
Registro completo

$ sudo ./launcher rebuild app
Asegurando que el lanzador esté actualizado
Obteniendo origin
El lanzador está actualizado
Deteniendo el contenedor antiguo

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Ya está actualizado.
    I, [2020-12-11T18:35:42.128663 #1] INFO – : Cargando --stdin
    I, [2020-12-11T18:35:42.145184 #1] INFO – : > DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-13 postgresql-client-13 postgresql-contrib-13
    I, [2020-12-11T18:35:47.812698 #1] INFO – : Leyendo listas de paquetes…
    Construyendo árbol de dependencias…
    Leyendo información de estado…
    Los siguientes paquetes se instalaron automáticamente y ya no son necesarios:
    libllvm7 pgdg-keyring postgresql-client-common postgresql-common ssl-cert
    Usa ‘apt autoremove’ para eliminarlos.
    Los siguientes paquetes serán ELIMINADOS:
    postgresql-13* postgresql-client-13*
    0 actualizados, 0 nuevos, 2 a eliminar y 0 no actualizados.
    Después de esta operación, se liberarán 54.3 MB de espacio en disco.
    (Leyendo la base de datos … 43863 archivos y directorios instalados actualmente.)
    Eliminando postgresql-13 (13.1-1.pgdg100+1) …
    invoke-rc.d: no se pudo determinar el nivel de ejecución actual
    invoke-rc.d: la política de policy-rc.d denegó la ejecución de stop.
    Eliminando postgresql-client-13 (13.1-1.pgdg100+1) …
    Procesando desencadenadores para postgresql-common (223.pgdg100+1) …
    Construyendo diccionarios de PostgreSQL desde los paquetes myspell/hunspell instalados…
    Eliminando archivos de diccionario obsoletos:
    (Leyendo la base de datos … 42050 archivos y directorios instalados actualmente.)
    Limpizando archivos de configuración para postgresql-13 (13.1-1.pgdg100+1) …
    Eliminando clúster main…

I, [2020-12-11T18:35:47.813593 #1] INFO – : > apt-get update && apt-get install -y postgresql-12 postgresql-client-12 postgresql-contrib-12
debconf: retrasando la configuración del paquete, ya que apt-utils no está instalado
I, [2020-12-11T18:36:26.125598 #1] INFO – : Obteniendo:1 Index of /pub/repos/apt/ buster-pgdg InRelease [104 kB]
Obteniendo:2 Index of /debian-security buster/updates InRelease [65.4 kB]
Obtenido:3 Index of /debian buster InRelease
Obteniendo:4 Index of /debian buster-updates InRelease [51.9 kB]
Obtenido:5 https://deb.nodesource.com/node_10.x buster InRelease
Obteniendo:6 Index of /pub/repos/apt/ buster-pgdg/main amd64 Packages [216 kB]
Obteniendo:7 Index of /debian-security buster/updates/main amd64 Packages [254 kB]
Se obtuvieron 690 kB en 2 s (342 kB/s)
Leyendo listas de paquetes…
Leyendo listas de paquetes…
Construyendo árbol de dependencias…
Leyendo información de estado…
Paquetes sugeridos:
postgresql-doc-12
Los siguientes paquetes NUEVOS se instalarán:
postgresql-12 postgresql-client-12
0 actualizados, 2 nuevos, 0 a eliminar y 5 no actualizados.
Se necesitan descargar 16.1 MB de archivos.
Después de esta operación, se utilizarán 54.0 MB adicionales de espacio en disco.
Obteniendo:1 Index of /pub/repos/apt/ buster-pgdg/main amd64 postgresql-client-12 amd64 12.5-1.pgdg100+1 [1,422 kB]
Obteniendo:2 Index of /pub/repos/apt/ buster-pgdg/main amd64 postgresql-12 amd64 12.5-1.pgdg100+1 [14.7 MB]
Se obtuvieron 16.1 MB en 5 s (3,052 kB/s)
Seleccionando paquete previamente no seleccionado postgresql-client-12.
(Leyendo la base de datos … 42050 archivos y directorios instalados actualmente.)
Preparando para desempaquetar …/postgresql-client-12_12.5-1.pgdg100+1_amd64.deb …
Desempaquetando postgresql-client-12 (12.5-1.pgdg100+1) …
Seleccionando paquete previamente no seleccionado postgresql-12.
Preparando para desempaquetar …/postgresql-12_12.5-1.pgdg100+1_amd64.deb …
Desempaquetando postgresql-12 (12.5-1.pgdg100+1) …
Configurando postgresql-client-12 (12.5-1.pgdg100+1) …
update-alternatives: usando /usr/share/postgresql/12/man/man1/psql.1.gz para proporcionar /usr/share/man/man1/psql.1.gz (psql.1.gz) en modo automático
Configurando postgresql-12 (12.5-1.pgdg100+1) …
Creando nuevo clúster de PostgreSQL 12/main …
/usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5
Los archivos que pertenecen a este sistema de base de datos serán propiedad del usuario “postgres”.
Este usuario también debe ser propietario del proceso del servidor.

El clúster de base de datos se inicializará con la configuración regional “C.UTF-8”.
La codificación predeterminada de la base de datos se ha establecido en consecuencia como “UTF8”.
La configuración predeterminada de búsqueda de texto se establecerá en “inglés”.

Los sumas de verificación de páginas de datos están desactivadas.

Corrigiendo permisos en el directorio existente /var/lib/postgresql/12/main … ok
creando subdirectorios … ok
seleccionando implementación de memoria compartida dinámica … posix
seleccionando max_connections predeterminado … 100
seleccionando shared_buffers predeterminado … 128MB
seleccionando zona horaria predeterminada … Etc/UTC
creando archivos de configuración … ok
ejecutando script de inicialización … ok
realizando inicialización post-inicialización … ok
sincronizando datos en el disco … ok

Éxito. Ahora puedes iniciar el servidor de base de datos usando:

pg_ctlcluster 12 main start

Ver Clúster Puerto Estado Propietario Directorio de datos Archivo de registro
12 main 5432 apagado postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
update-alternatives: usando /usr/share/postgresql/12/man/man1/postmaster.1.gz para proporcionar /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) en modo automático
invoke-rc.d: no se pudo determinar el nivel de ejecución actual
invoke-rc.d: la política de policy-rc.d denegó la ejecución de start.
Procesando desencadenadores para postgresql-common (223.pgdg100+1) …
Construyendo diccionarios de PostgreSQL desde los paquetes myspell/hunspell instalados…
Eliminando archivos de diccionario obsoletos:

I, [2020-12-11T18:36:26.126230 #1] INFO – : > mkdir -p /shared/postgres_run
I, [2020-12-11T18:36:26.135185 #1] INFO – :
I, [2020-12-11T18:36:26.135798 #1] INFO – : > chown postgres:postgres /shared/postgres_run
I, [2020-12-11T18:36:26.146730 #1] INFO – :
I, [2020-12-11T18:36:26.147724 #1] INFO – : > chmod 775 /shared/postgres_run
I, [2020-12-11T18:36:26.161275 #1] INFO – :
I, [2020-12-11T18:36:26.162652 #1] INFO – : > rm -fr /var/run/postgresql
I, [2020-12-11T18:36:26.175256 #1] INFO – :
I, [2020-12-11T18:36:26.176159 #1] INFO – : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-12-11T18:36:26.184044 #1] INFO – :
I, [2020-12-11T18:36:26.184889 #1] INFO – : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres ya se está ejecutando, detener contenedor ; exit 1
2020/12/11 18:36:26 socat[1595] E connect(6, AF=1 “/shared/postgres_run/.s.PGSQL.5432”, 36): No existe el archivo o directorio
I, [2020-12-11T18:36:26.198536 #1] INFO – :
I, [2020-12-11T18:36:26.198946 #1] INFO – : > rm -fr /shared/postgres_run/.s*
I, [2020-12-11T18:36:26.213075 #1] INFO – :
I, [2020-12-11T18:36:26.217247 #1] INFO – : > rm -fr /shared/postgres_run/.pid
I, [2020-12-11T18:36:26.234701 #1] INFO – :
I, [2020-12-11T18:36:26.235766 #1] INFO – : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-12-11T18:36:26.252691 #1] INFO – :
I, [2020-12-11T18:36:26.253254 #1] INFO – : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-12-11T18:36:26.265460 #1] INFO – :
I, [2020-12-11T18:36:26.305117 #1] INFO – : Archivo > /etc/service/postgres/run chmod: +x chown:
I, [2020-12-11T18:36:26.340226 #1] INFO – : Archivo > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2020-12-11T18:36:26.341055 #1] INFO – : > chown -R root /var/lib/postgresql/12/main
I, [2020-12-11T18:36:26.395341 #1] INFO – :
I, [2020-12-11T18:36:26.397567 #1] INFO – : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-12-11T18:36:26.410438 #1] INFO – :
I, [2020-12-11T18:36:26.410620 #1] INFO – : > chown -R postgres:postgres /shared/postgres_data
I, [2020-12-11T18:36:26.483230 #1] INFO – :
I, [2020-12-11T18:36:26.483480 #1] INFO – : > chown -R postgres:postgres /var/run/postgresql
I, [2020-12-11T18:36:26.498060 #1] INFO – :
I, [2020-12-11T18:36:26.498607 #1] INFO – : Reemplazando data_directory = ‘/var/lib/postgresql/12/main’ por data_directory = ‘/shared/postgres_data’ en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.499830 #1] INFO – : Reemplazando (?-mix:#?listen_addresses =.) por listen_addresses = '
’ en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.501216 #1] INFO – : Reemplazando (?-mix:#?synchronous_commit =.) por synchronous_commit = $db_synchronous_commit en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.503288 #1] INFO – : Reemplazando (?-mix:#?shared_buffers =.) por shared_buffers = $db_shared_buffers en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.503960 #1] INFO – : Reemplazando (?-mix:#?work_mem =.) por work_mem = $db_work_mem en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.505121 #1] INFO – : Reemplazando (?-mix:#?default_text_search_config =.) por default_text_search_config = ‘$db_default_text_search_config’ en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.509117 #1] INFO – : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-12-11T18:36:26.529609 #1] INFO – :
I, [2020-12-11T18:36:26.530771 #1] INFO – : Reemplazando (?-mix:#?checkpoint_segments =.) por checkpoint_segments = $db_checkpoint_segments en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.533329 #1] INFO – : Reemplazando (?-mix:#?logging_collector =.) por logging_collector = $db_logging_collector en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.534342 #1] INFO – : Reemplazando (?-mix:#?log_min_duration_statement =.) por log_min_duration_statement = $db_log_min_duration_statement en /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.535368 #1] INFO – : Reemplazando (?-mix:^#local +replication +postgres +peer$) por local replication postgres peer en /etc/postgresql/12/main/pg_hba.conf
I, [2020-12-11T18:36:26.536115 #1] INFO – : Reemplazando (?-mix:^host.*all.*all.127.$) por host all all 0.0.0.0/0 md5 en /etc/postgresql/12/main/pg_hba.conf
I, [2020-12-11T18:36:26.536854 #1] INFO – : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
I, [2020-12-11T18:36:26.542081 #1] INFO – : > sleep 5
2020-12-11 18:36:26.649 UTC [1611] FATAL: los archivos de la base de datos son incompatibles con el servidor
2020-12-11 18:36:26.649 UTC [1611] DETAIL: El directorio de datos fue inicializado por PostgreSQL versión 13, que no es compatible con esta versión 12.5 (Debian 12.5-1.pgdg100+1).
I, [2020-12-11T18:36:31.555237 #1] INFO – :
I, [2020-12-11T18:36:31.556039 #1] INFO – : > su postgres -c ‘createdb discourse’ || true
createdb: error: no se pudo conectar a la base de datos template1: no se pudo conectar al servidor: No existe el archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix “/var/run/postgresql/.s.PGSQL.5432”?
I, [2020-12-11T18:36:31.718921 #1] INFO – :
I, [2020-12-11T18:36:31.719321 #1] INFO – : > su postgres -c ‘psql discourse -c “create user discourse;”’ || true
psql: error: no se pudo conectar al servidor: No existe el archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix “/var/run/postgresql/.s.PGSQL.5432”?
I, [2020-12-11T18:36:31.892475 #1] INFO – :
I, [2020-12-11T18:36:31.893214 #1] INFO – : > su postgres -c ‘psql discourse -c “grant all privileges on database discourse to discourse;”’ || true
psql: error: no se pudo conectar al servidor: No existe el archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix “/var/run/postgresql/.s.PGSQL.5432”?
I, [2020-12-11T18:36:32.067027 #1] INFO – :
I, [2020-12-11T18:36:32.067426 #1] INFO – : > su postgres -c ‘psql discourse -c “alter schema public owner to discourse;”’
psql: error: no se pudo conectar al servidor: No existe el archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix “/var/run/postgresql/.s.PGSQL.5432”?
I, [2020-12-11T18:36:32.256513 #1] INFO – :

FAILED

Pups::ExecError: su postgres -c ‘psql discourse -c “alter schema public owner to discourse;”’ failed with return #<Process::Status: pid 1637 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn’
exec failed with the params “su postgres -c ‘psql $db_name -c "alter schema public owner to $db_user;"’”
I, [2020-12-11T18:36:32.257585 #1] INFO – : Terminating async processes
df2fcc37c368d13eac3b4a6db4b592028405a0ea91ff39fb8cbb8bcbdc4846fd
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Estoy un poco confundido, pero parece que ya estamos en la versión 13 de PostgreSQL. Restauré app.yml para PostgreSQL predeterminado, ejecuté nuevamente la reconstrucción y el foro está de nuevo en funcionamiento. Resuelto.