Rebuild fallisce con errori yarn

Sto riscontrando un errore durante l’aggiornamento della mia istanza con ./launcher rebuild app su Ubuntu 22.04. Per quanto posso capire, i problemi iniziano qui:

error /var/www/discourse/app/assets/javascripts/node_modules/discourse: Command failed.
Exit code: 1
Command: yarn --silent --cwd .. patch-package
Arguments:
Directory: /var/www/discourse/app/assets/javascripts/node_modules/discourse
Output:
error Command "patch-package" not found.
error Command failed with exit code 1.

Ci sono alcuni avvisi “_ has unmet peer dependency” sopra, ma questo è il primo errore (a parte “_ already exists” durante la configurazione del DB, ma capisco che sia un comportamento atteso).

Sfortunatamente, l’aggiornamento in cui è iniziato questo problema è avvenuto il giorno prima che partissi per un viaggio in famiglia, quindi ero un po’ di fretta e non ho avuto tempo di risolvere il problema al momento. Ma lo riscontro in modo coerente. L’host è completamente aggiornato e non ricordo di aver fatto nulla di particolarmente unico con la configurazione. Ho spostato /var/discourse su un volume separato di Digital Ocean circa 3 mesi fa (che so essere Sconsigliato™ per motivi di prestazioni, ma per un forum con centinaia di utenti, ho pensato che ne valesse la pena) ma ha funzionato bene dopo quella modifica per quanto ne so.

1 Mi Piace

Penso che quelli siano solo avvisi.

Se il sito non dovesse riapparire, puoi provare
./launcher start app

Ho eseguito ./launcher start app e ora ricevo un HTTP 502. Da ./launcher logs app, vedo

[Wed 19 Jul 2023 10:18:34 PM UTC] Esegui comando di ricaricamento: sv reload nginx
fallimento: nginx: runsv non è in esecuzione
[Wed 19 Jul 2023 10:18:34 PM UTC] Errore di ricaricamento per :
Avviato runsvdir, il PID è 530
ok: run: redis: (pid 542) 0s
ok: run: postgres: (pid 543) 0s
pid del supervisore: 538 pid di unicorn: 569
Impossibile trovare rtlcss-0.2.1, mini_racer-0.8.0, puma-6.3.0, msgpack-1.7.1, libv8-node-18.16.0.0-x86_64-linux nelle gemme installate localmente
Esegui `bundle install` per installare le gemme mancanti.
config/unicorn_launcher: riga 71: kill: (569) - Nessun processo trovato
config/unicorn_launcher: riga 15: kill: (569) - Nessun processo trovato
(538) in uscita

Questo si ripete parecchio.

Forse esegui bundle install?

Per fare ciò, devo entrare nel container. L’ho fatto e, quando avvio il container in seguito, l’interfaccia web mostra

Oops
Il software che alimenta questo forum di discussione ha riscontrato un problema imprevisto. Ci scusiamo per l'inconveniente.

Informazioni dettagliate sull'errore sono state registrate e una notifica automatica generata. Ci daremo un'occhiata.

Non è necessaria alcuna ulteriore azione. Tuttavia, se la condizione di errore persiste, è possibile fornire ulteriori dettagli, inclusi i passaggi per riprodurre l'errore, pubblicando un argomento di discussione nella categoria di feedback del sito.

./launcher logs app restituisce

[Mer 19 lug 2023 23:52:05 UTC] Domini non modificati.
[Mer 19 lug 2023 23:52:05 UTC] Salta, prossima ora di rinnovo è: 2023-08-21T00:34:21Z
[Mer 19 lug 2023 23:52:05 UTC] Aggiungi '--force' per forzare il rinnovo.
[Mer 19 lug 2023 23:52:05 UTC] Installazione chiave in: /shared/ssl/distroleaders.club_ecc.key
[Mer 19 lug 2023 23:52:05 UTC] Installazione catena completa in: /shared/ssl/distroleaders.club_ecc.cer
[Mer 19 lug 2023 23:52:05 UTC] Esegui comando di ricaricamento: sv reload nginx
fallimento: nginx: runsv non in esecuzione
[Mer 19 lug 2023 23:52:05 UTC] Errore di ricaricamento per:
Avviato runsvdir, PID è 530
ok: run: redis: (pid 544) 0s
ok: run: postgres: (pid 543) 0s
supervisor pid: 538 unicorn pid: 575

Se entro nuovamente nel container, posso eseguire con successo sv reload nginx, ma ciò non cambia il comportamento.

Inoltre, se rieseguo ./launcher rebuild app, devo rientrare nel container per eseguire nuovamente bundle install.

C’è un altro errore da qualche parte. Includi l’intero log.

Hai plugin non standard?

Non che io ricordi (a meno che @mattdm non ne abbia inseriti di nascosto mentre non guardavo :smile: ). Anche discourse-doctor dice “Nessun plugin non ufficiale rilevato”.

1 Mi Piace

Intendevo il log completo da una ricompilazione.

Mi scuso. Ecco l’output di una ricostruzione. Era quello che stavi cercando?

La seconda riga racconta tutta la storia

fatal: not a git repository (or any parent up to mount point /var)

La tua directory /var/discourse non è un repository git, il che interrompe il nostro aggiornamento automatico del launcher e gli strumenti che utilizziamo per avviare Discourse, il che a sua volta significa che sei bloccato in una vecchia immagine docker.

Devi annullare le modifiche che hai apportato per interrompere questo processo.

3 Mi Piace

Quando hai copiato i file nel tuo volume, non hai copiato .git, quindi dovrai clonarlo e copiarci dentro le altre cose.

Probabilmente dovresti fare in modo che il tuo volume contenga solo gli upload, che presumo sia ciò che occupa la maggior parte dello spazio, e quindi puoi avere solo gli upload e i backup sul volume.

1 Mi Piace

Oh mio Dio. Scommetto di poter indovinare esattamente cosa ho fatto e coinvolge il fatto che * non corrisponde a .git in un comando rsync. Non sarebbe la prima volta che ho usato rsync per rendermi la vita più difficile. Grazie per averlo notato!

C’è una ragione tecnica per cui la ricostruzione non può uscire a quel punto? Avrebbe reso la risoluzione dei problemi più facile (anche se iniziare dall’alto invece che dal basso lo avrebbe fatto).

2 Mi Piace

Fortunatamente, ho ancora il tarball pre-migrazione perché non ho perso tutte le mie capacità di sysadmin nel corso degli anni. :smile:

Questo è sul più piccolo droplet di Digital Ocean, quindi è principalmente il sistema che occupa spazio. Upload e backup insieme sono circa 100 MB. Penso che probabilmente finirò per fare, se apporto una modifica, è passare a un droplet più grande che ha più spazio su disco.

Grazie per l’aiuto, lo apprezzo molto!

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.