Funzioni amministrative

Ciao, quando provo a connettermi all’interfaccia di amministrazione, ottengo una schermata bianca. Non posso effettuare aggiornamenti, ad esempio, anche se sono un amministratore.
Cosa dovrei fare?
Grazie per l’aiuto.
Muriel

1 Mi Piace

Potresti provare la modalità provvisoria. Potresti anche fare bene a eseguire un aggiornamento dalla riga di comando.

3 Mi Piace

Aggiornamento: Ho eseguito un bootstrap corretto, distrutto e riavviato con una configurazione a 2 container e ora i numeri di versione segnalati sono aggiornati e l’interfaccia utente di amministrazione viene nuovamente visualizzata.

Il resto del post rimane per posterità.


Sto riscontrando quello che potrebbe essere un problema simile. L’interfaccia di amministrazione si carica, ma mostra solo le schede in alto e la sezione principale del contenuto è vuota:

Log della console del browser

Esaminando i log della console del browser, vedo errori come:

[Error] Error: VM BUG: Target must be set before attempting to jump
vendor.xxxxx-xxxx.js
Unhandled Promise Rejection: Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
Stack di errori
[Error] Error: VM BUG: Target must be set before attempting to jump
	b (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:131956)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:69428)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	rerender (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	invoke (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:156653)
	_runExpiredTimers (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:160801)
[Error] Unhandled Promise Rejection: Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
	(anonymous function) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1310)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1311)
	(anonymous function) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:3065)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1375)
	requireModule (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:599)
	_extractDefaultExport (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:269780)
	resolveOther (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266326)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266888)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262092)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262185)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262275)
	c (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:260192)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:258815)
	getRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:56849)
	fetchRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:267571)
	_getQPMeta (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63399)
	_hydrateUnsuppliedQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:64113)
	_prepareQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63271)
	normaliseQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38898)
	_generateURL (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38990)
	eA (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:202925)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49065)
	X (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:140358)
	T (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49044)
	eM (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:80191)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:79868)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:70930)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:65312)
	evaluateSyscall (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111047)
	evaluateInner (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110609)
	evaluateOuter (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110528)
	next (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121496)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121359)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:112232)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:114799)
	throw (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111583)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:68993)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	rerender (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	invoke (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:155980)

Processo di aggiornamento (2 container)

Inizialmente ho iniziato a riscontrare il problema dopo aver tentato di completare l’aggiornamento dall’interfaccia di amministrazione di Discourse, dove mi è stato mostrato che dovevo prima aggiornare Docker Manager.

Dopo aver aggiornato Docker Manager, ho iniziato a riscontrare il problema, quindi mi sono collegato via SSH alla macchina e ho eseguito un aggiornamento manuale (2 container) solo per web_only:

cd /var/discourse
git pull
./launcher bootstrap web_only
./launcher stop web_only && ./launcher start web_only
           ^^^^
    ⚠️ Questo è sbagliato! Usa destroy come sotto. ⚠️

È curioso che il percorso /about.json mostri ancora che sto eseguendo 3.4.0.beta4-dev, che è quello da cui pensavo di essere partito poiché l’email originale era per un aggiornamento da 3.4.0.beta4-dev a 3.5.0.beta1.

Ho ricontrollato il log di git e sembra che almeno discourse_docker sia sull’ultimo commit 3715498fc188d60c0b579443383c4e973cf26f59 al momento della scrittura.

La modalità sicura funziona

Non ero a conoscenza della modalità sicura, ma apparentemente il problema non si verifica se disabilito TUTTI i plugin lato client.

Disabilitare solo le personalizzazioni dei plugin non ufficiali lato client non risolve il problema, poiché ho provato ogni combinazione per restringere il campo.

Opzione Risultato
no_unofficial_plugins :cross_mark:
no_plugins :white_check_mark:
no_themes :cross_mark:

La disabilitazione di docker_manager non aiuta

Ho provato a commentare il plugin docker_manager sotto hooks/after_code, quindi a ricompilare il container web_only + stop && start, ma il messaggio di errore lato client sopra indicato rimane ancora.

Introduce un altro messaggio di errore secondo cui la visita della pagina di amministrazione di this.class.create non è una funzione, ma forse questo è previsto con il plugin docker_manager sottostante disabilitato per questo test:

loader.js:247 Uncaught (in promise) Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
    at loader.js:247:1
    at h (loader.js:258:1)
    at u.findDeps (loader.js:168:1)
    at h (loader.js:262:1)
    at requireModule (loader.js:24:1)
    at f.get (composer.js:874:1)
    at push.98673._extractDefaultExport (composer.js:874:1)
    at push.98673.resolveOther (composer.js:874:1)
    at push.98673.resolve (composer.js:874:1)
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

index.js:78 Uncaught TypeError: this.class.create is not a function
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

Ancora una volta, l’utilizzo della modalità sicura con no_plugins aggira temporaneamente il problema.

Ricordavo a memoria i comandi per l’aggiornamento a tempo minimo con 2 container e apparentemente la mia memoria non è affidabile! :flushed_face:

Dopo aver utilizzato il comando corretto per distruggere e poi avviare il nuovo container dopo il bootstrap, vedo che le versioni sono aggiornate e l’interfaccia di amministrazione funziona come previsto.

Hai aggiornato il container dei dati? Dovresti farlo, ma prima, vedi Aggiornamento PostgreSQL 15. Oppure, se odi davvero leggere, esegui semplicemente ./laumcher rebuild data due volte e dovresti essere a posto. Quindi dovrai distruggere, avviare il container web (altrimenti cercherà il vecchio container dei dati che avrai distrutto).

Non ancora, ma grazie per esserti interessato!

Stavo già pensando di configurare un nuovo server più potente, quindi stavo solo facendo alcune ricerche per vedere se potevo eseguire il backup da Discourse 3.5 + PG13 e poi ripristinarlo su Discourse 3.5 + PG15 su un host diverso.

Non amo i tempi di inattività prolungati e in passato ho temporaneamente impostato la community in sola lettura e ho eseguito un backup/ripristino tra istanze server ed è stato effettivamente a tempo di inattività zero (a parte il periodo di sola lettura, ovviamente)… quindi ho pensato di fare ricerche/test per vedere se funziona tra le versioni di PG.

Altrimenti, mi limiterò a mordere il proiettile ed eseguire prima l’aggiornamento a PG15 prima della migrazione del server. :slight_smile:

1 Mi Piace

Funziona. Probabilmente è ora di aggiornare anche il tuo sistema operativo. Avvia semplicemente un nuovo server e ripristina il backup.

2 Mi Piace

Ho esattamente lo stesso problema. Grazie per l’aiuto. Il mio webmaster Benjamin ti leggerà.
Muriel

questo è quello che mi è successo. avviare un nuovo server e ripristinare dal backup era l’unica opzione.
È diretto al punto. E non perdere tempo a debuggarlo. questo consiglio ti farà partire in pochissimo tempo.

Alla fine ho eseguito il backup e il ripristino e ha funzionato come previsto.


Per riferimento, nel caso in cui qualcun altro riscontri un problema simile…

Ho riscontrato un piccolo problema all’inizio poiché il processo di ripristino chiama apparentemente uploads:migrate_to_s3 internamente e si bloccava.

[2025-02-26 00:24:16] Migrating the database...
[2025-02-26 00:24:24]
[2025-02-26 00:24:24] Reconnecting to the database...
[2025-02-26 00:24:24] Reloading site settings...
[2025-02-26 00:24:24] Disabling outgoing emails for non-staff users...
[2025-02-26 00:24:24] Disabling readonly mode...
[2025-02-26 00:24:24] Clearing category cache...
[2025-02-26 00:24:24] Reloading translations...
[2025-02-26 00:24:24] Remapping uploads...
[2025-02-26 00:24:24] Restoring uploads, this may take a while...
[2025-02-26 00:25:09] EXCEPTION: 12 of 12208 uploads are not migrated to S3. S3 migration failed for db 'default'.
[2025-02-26 00:25:09] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:73:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:354:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:167:in `restore_uploads'
/var/www/discourse/lib/backup_restore/restorer.rb:71:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-02-26 00:25:09] Trying to rollback...
[2025-02-26 00:25:09] Rolling back...
[2025-02-26 00:25:10] Cleaning stuff up...

Ho finito per eseguire alcune query SQL nel contenitore dei dati per vedere se riuscivo a capire cosa stava succedendo.

./launcher enter data
sudo -u postgres psql discourse
SELECT url FROM uploads WHERE url NOT LIKE '%s3%';

Questo ha restituito solo alcuni elementi standard integrati da Discourse, quindi ho provato il contrario:

SELECT url from uploads where url LIKE '%s3%' limit 10;

Questo mi ha dato un sacco di corrispondenze nel formato:

  • //{my-bucket-name}.s3.dualstack.us-east-2.amazonaws.com/original/2X/5/{image-id}.jpeg

Quindi ho provato una query per ottenere tutto tranne gli elementi che corrispondevano a quell’host s3.dualstack e ho scoperto che c’erano 12 vecchie voci che utilizzavano un formato leggermente diverso (corrispondente al numero che è fallito dal precedente errore di log di ripristino).

  • //{my-bucket-name}.s3-us-east-2.amazonaws.com/{file-path}.jpeg

Quando ho verificato l’esistenza di quei file nel bucket effettivo, non c’erano, quindi ho finito per eliminarli con qualcosa di simile:

DELETE FROM uploads where url LIKE '%{my-bucket-name}.s3-us-east-2.amazonaws.com%';

Dopo di che, il backup e il ripristino hanno funzionato come previsto!

PS. Non dimenticare di riabilitare le email dopo aver ripristinato il backup!

/admin/site_settings/category/all_results?filter=disable_email
4 Mi Piace

2 post sono stati divisi in un nuovo argomento: Problema nell’aggiornamento di un sito di 10 anni