Git corrotto durante la ricostruzione dell'app del launcher

Dopo l’aggiornamento di docker_manager tramite l’interfaccia utente (che sembra essere andato a buon fine), la dashboard Admin ha semplicemente visualizzato una pagina vuota, anche se il resto del forum sembrava funzionare.

Per risolvere questo problema, ho dovuto eseguire:

./launcher rebuild app

Tuttavia, durante quel processo, si sono verificati degli errori:

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 l’error: packfile continua a ripetersi fino all’interruzione.

A quanto pare, il repository git si è corrotto. Ma quale repository git?
Non ho nemmeno una cartella /var/www/discourse, quindi presumo che si trovi all’interno di un volume del container?

Sono un po’ perplesso. Grazie per l’aiuto!

Cosa intendi dire?

Normalmente aggiorneresti docker_manager tramite l’interfaccia utente.

Ah! Il mio errore. Intendevo UI, non API. Lo modificherò subito.

1 Mi Piace

Ho provato a risolverlo avviando ed entrando nel container dell’app:

./launcher start app
./launcher enter app

Quindi ho verificato che l’errore si verificasse durante la chiamata al comando git come utente discourse:

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

Con il seguente risultato:

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
ecc..

Ho provato a risolverlo rinominando discourse e clonandone uno nuovo:

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

Una volta clonato, ho provato a eseguire nuovamente git fetch senza errori!

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

Ma una volta uscito dalla shell del container e provato a ricostruire nuovamente con ./launcher rebuild app, ho ottenuto lo stesso errore.

Il comando ./launcher rebuild app utilizza un container diverso da quello in cui entra ./launcher enter app?

1 Mi Piace

sì, ci sono due livelli di git, uno esterno.

il tuo errore sembra effettivamente verificarsi all’interno del container… molto strano!

Finalmente sono riuscito a farlo funzionare!
Penso che sia stata una combinazione tra un git corrotto e il risultato di un precedente aggiornamento di docker. L’ho risolto eliminando tutti i container e le immagini docker:

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

Questo è risultato/terminato con:

Upgrade Complete
----------------
Le statistiche dell'ottimizzatore non vengono trasferite da pg_upgrade.
Una volta avviato il nuovo server, considera l'esecuzione di:
    /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

L'esecuzione di questo script eliminerà i file di dati del vecchio cluster:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES COMPLETE

Il database 13 vecchio è memorizzato in /shared/postgres_data_old

Per completare l'aggiornamento, ricostruisci di nuovo usando:

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

Eseguendo di nuovo la ricostruzione, ha ricominciato a funzionare completamente:

./launcher rebuild app
1 Mi Piace