Fórum offline devido a falhas nas reconstruções em Tests-Pass

Continuando a discussão de Atualização do PostgreSQL 13:

Encontrei problemas ao atualizar a versão 2.7.0beta1 (Tests-Pass) para remover alguns plugins problemáticos.

Editei nosso app.yml para permanecer no PostgreSQL 12. A reconstrução falhou e estou vendo:

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.
Log Completo

$ sudo ./launcher rebuild app
Garantindo que o launcher está atualizado
Buscando origem
O launcher está atualizado
Parando o container antigo

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Já está atualizado.
    I, [2020-12-11T18:35:42.128663 #1] INFO – : Carregando --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 – : Lendo listas de pacotes…
    Construindo árvore de dependências…
    Lendo informações de estado…
    Os seguintes pacotes foram instalados automaticamente e não são mais necessários:
    libllvm7 pgdg-keyring postgresql-client-common postgresql-common ssl-cert
    Use ‘apt autoremove’ para removê-los.
    Os seguintes pacotes serão REMOVIDOS:
    postgresql-13* postgresql-client-13*
    0 atualizados, 0 novos instalados, 2 a remover e 0 não atualizados.
    Após esta operação, 54,3 MB de espaço em disco serão liberados.
    (Lendo banco de dados … 43863 arquivos e diretórios atualmente instalados.)
    Removendo postgresql-13 (13.1-1.pgdg100+1) …
    invoke-rc.d: não foi possível determinar o nível de execução atual
    invoke-rc.d: a política-rc.d negou a execução de stop.
    Removendo postgresql-client-13 (13.1-1.pgdg100+1) …
    Processando gatilhos para postgresql-common (223.pgdg100+1) …
    Construindo dicionários PostgreSQL a partir dos pacotes myspell/hunspell instalados…
    Removendo arquivos de dicionário obsoletos:
    (Lendo banco de dados … 42050 arquivos e diretórios atualmente instalados.)
    Eliminando arquivos de configuração de postgresql-13 (13.1-1.pgdg100+1) …
    Eliminando cluster 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: adiando configuração de pacote, pois apt-utils não está instalado
I, [2020-12-11T18:36:26.125598 #1] INFO – : Obtendo:1 Index of /pub/repos/apt/ buster-pgdg InRelease [104 kB]
Obtendo:2 Index of /debian-security buster/updates InRelease [65,4 kB]
Conectado:3 Index of /debian buster InRelease
Obtendo:4 Index of /debian buster-updates InRelease [51,9 kB]
Conectado:5 https://deb.nodesource.com/node_10.x buster InRelease
Obtendo:6 Index of /pub/repos/apt/ buster-pgdg/main amd64 Packages [216 kB]
Obtendo:7 Index of /debian-security buster/updates/main amd64 Packages [254 kB]
Baixados 690 kB em 2s (342 kB/s)
Lendo listas de pacotes…
Lendo listas de pacotes…
Construindo árvore de dependências…
Lendo informações de estado…
Pacotes sugeridos:
postgresql-doc-12
Os seguintes NOVOS pacotes serão instalados:
postgresql-12 postgresql-client-12
0 atualizados, 2 novos instalados, 0 a remover e 5 não atualizados.
É necessário baixar 16,1 MB de arquivos.
Após esta operação, 54,0 MB adicionais de espaço em disco serão usados.
Obtendo:1 Index of /pub/repos/apt/ buster-pgdg/main amd64 postgresql-client-12 amd64 12.5-1.pgdg100+1 [1.422 kB]
Obtendo:2 Index of /pub/repos/apt/ buster-pgdg/main amd64 postgresql-12 amd64 12.5-1.pgdg100+1 [14,7 MB]
Baixados 16,1 MB em 5s (3.052 kB/s)
Selecionando pacote anteriormente não selecionado postgresql-client-12.
(Lendo banco de dados … 42050 arquivos e diretórios atualmente instalados.)
Preparando para descompactar …/postgresql-client-12_12.5-1.pgdg100+1_amd64.deb …
Descompactando postgresql-client-12 (12.5-1.pgdg100+1) …
Selecionando pacote anteriormente não selecionado postgresql-12.
Preparando para descompactar …/postgresql-12_12.5-1.pgdg100+1_amd64.deb …
Descompactando 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 fornecer /usr/share/man/man1/psql.1.gz (psql.1.gz) no modo automático
Configurando postgresql-12 (12.5-1.pgdg100+1) …
Criando novo cluster PostgreSQL 12/main …
/usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5
Os arquivos pertencentes a este sistema de banco de dados serão de propriedade do usuário “postgres”.
Este usuário também deve ser o proprietário do processo do servidor.

O cluster de banco de dados será inicializado com o local “C.UTF-8”.
A codificação padrão do banco de dados foi definida como “UTF8”.
A configuração padrão de busca de texto será definida como “inglês”.

Checksums de página de dados estão desabilitados.

Corrigindo permissões no diretório existente /var/lib/postgresql/12/main … ok
criando subdiretórios … ok
selecionando implementação de memória compartilhada dinâmica … posix
selecionando max_connections padrão … 100
selecionando shared_buffers padrão … 128MB
selecionando fuso horário padrão … Etc/UTC
criando arquivos de configuração … ok
executando script de inicialização … ok
realizando inicialização pós-inicialização … ok
sincronizando dados para o disco … ok

Sucesso. Você pode agora iniciar o servidor de banco de dados usando:

pg_ctlcluster 12 main start

Ver Cluster Porta Status Owner Diretório de dados Arquivo de log
12 main 5432 down 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 fornecer /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) no modo automático
invoke-rc.d: não foi possível determinar o nível de execução atual
invoke-rc.d: a política-rc.d negou a execução de start.
Processando gatilhos para postgresql-common (223.pgdg100+1) …
Construindo dicionários PostgreSQL a partir dos pacotes myspell/hunspell instalados…
Removendo arquivos de dicionário 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 já está em execução, pare o container ; exit 1
2020/12/11 18:36:26 socat[1595] E connect(6, AF=1 “/shared/postgres_run/.s.PGSQL.5432”, 36): Arquivo ou diretório não encontrado
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 – : Arquivo > /etc/service/postgres/run chmod: +x chown:
I, [2020-12-11T18:36:26.340226 #1] INFO – : Arquivo > /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 – : Substituindo data_directory = ‘/var/lib/postgresql/12/main’ por data_directory = ‘/shared/postgres_data’ em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.499830 #1] INFO – : Substituindo (?-mix:#?listen_addresses =.) por listen_addresses = '
’ em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.501216 #1] INFO – : Substituindo (?-mix:#?synchronous_commit =.) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.503288 #1] INFO – : Substituindo (?-mix:#?shared_buffers =.) por shared_buffers = $db_shared_buffers em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.503960 #1] INFO – : Substituindo (?-mix:#?work_mem =.) por work_mem = $db_work_mem em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.505121 #1] INFO – : Substituindo (?-mix:#?default_text_search_config =.) por default_text_search_config = ‘$db_default_text_search_config’ em /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 – : Substituindo (?-mix:#?checkpoint_segments =.) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.533329 #1] INFO – : Substituindo (?-mix:#?logging_collector =.) por logging_collector = $db_logging_collector em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.534342 #1] INFO – : Substituindo (?-mix:#?log_min_duration_statement =.) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/12/main/postgresql.conf
I, [2020-12-11T18:36:26.535368 #1] INFO – : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres peer em /etc/postgresql/12/main/pg_hba.conf
I, [2020-12-11T18:36:26.536115 #1] INFO – : Substituindo (?-mix:^host.*all.*all.127.$) por host all all 0.0.0.0/0 md5 em /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: arquivos de banco de dados incompatíveis com o servidor
2020-12-11 18:36:26.649 UTC [1611] DETAIL: O diretório de dados foi inicializado pela versão 13 do PostgreSQL, que não é compatível com esta versão 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: erro: não foi possível conectar ao banco de dados template1: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
O servidor está rodando localmente e aceitando
conexões no socket de domínio 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: erro: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
O servidor está rodando localmente e aceitando
conexões no socket de domínio 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: erro: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
O servidor está rodando localmente e aceitando
conexões no socket de domínio 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: erro: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
O servidor está rodando localmente e aceitando
conexões no socket de domínio 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 – : Terminando processos assíncronos
df2fcc37c368d13eac3b4a6db4b592028405a0ea91ff39fb8cbb8bcbdc4846fd
** FALHA NA INICIALIZAÇÃO ** por favor, role para cima e procure mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Estou um pouco confuso, mas parece que já estamos na versão 13 do PostgreSQL. Restauramos o app.yml para o PostgreSQL padrão, executamos novamente o rebuild e o fórum está de volta no ar e funcionando. Resolvido.