Git corrompido na reconstrução do launcher do aplicativo

Após atualizar o docker_manager através da API (o que pareceu ocorrer bem), o painel do Admin simplesmente renderizou uma página em branco, mesmo que o restante do fórum parecesse funcionar.

Para resolver isso, recorri à execução de:

./launcher rebuild app

No entanto, durante esse processo, ocorreram erros:

I, [2025-07-14T08:54:06.062789 #1]  INFO -- : 
> cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index

… e o error: packfile continua sendo repetido até ser interrompido.

Pelo que parece, o repositório git ficou corrompido. Mas qual repositório git?
Eu nem mesmo tenho uma pasta /var/www/discourse, então presumo que isso esteja dentro de um volume de contêiner?

Estou um pouco perplexo. Obrigado pela ajuda!

O que você quer dizer com isso?

Normalmente, você atualizaria o docker_manager através da interface do usuário.

Ah! Meu erro. Eu quis dizer UI, não API. Vou editar imediatamente.

1 curtida

Tentei resolvê-lo iniciando e entrando no contêiner do aplicativo:

./launcher start app
./launcher enter app

Em seguida, verifiquei que o erro ocorreu ao chamar o comando git como o usuário discourse:

cd /var/www/discourse
sudo -H -E -u discourse bash -c 'git fetch --tags --prune-tags --prune --force origin'

Resultando em:

error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
etc..

Tentei resolvê-lo renomeando o discourse e clonando um novo:

cd /var/www
mv discourse discourse-old
git clone https://github.com/discourse/discourse.git
chown -R discourse:discourse discourse

Uma vez clonado, tentei executar o git fetch novamente sem erros!

cd /var/www/discourse
sudo -H -E -u discourse bash -c 'git fetch --tags --prune-tags --prune --force origin'

Mas ao sair do shell do contêiner e tentar reconstruir novamente com ./launcher rebuild app, obtive o mesmo erro.

O ./launcher rebuild app usa um contêiner diferente do que o ./launcher enter app entra?

1 curtida

sim, existem dois níveis de git, um externo.

seu erro de fato parece ocorrer dentro do container… muito estranho!

Finalmente consegui fazer funcionar!
Acho que foi uma mistura entre um git corrompido e o resultado de uma atualização anterior do docker. Resolvi isso podando todos os contêineres e imagens do docker:

cd /opt/discourse
./launcher stop app
docker container prune
docker image prune -a
./launcher rebuild app

Isso resultou/terminou com:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
Once you start the new server, consider running:
    /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES COMPLETE

Old 13 database is stored at /shared/postgres_data_old

To complete the upgrade, rebuild again using:

./launcher rebuild app
-------------------------------------------------------------------------------------

Ao executar a reconstrução novamente, começou a funcionar completamente:

./launcher rebuild app
1 curtida