Sull’ultima versione beta di Discourse, installazione Docker, multisito.
Sto tentando di ripristinare un backup con il database originale REDACTED verso il database corrente db8015. Gli upload finiscono in default, sia nel filesystem che nel database.
Ciò accade sia quando il ripristino viene avviato dall’interfaccia grafica, sia quando viene eseguito da riga di comando utilizzando RAILS_DB=db8015 RAILS_ENV=production script/discourse restore.
[INIZIATO]
'DHSupport' ha avviato il ripristino!
Impostazione dello stato di ripristino in corso...
Verifica dell'esistenza di /var/www/discourse/tmp/restores/db8015/2019-10-11-104940...
Copia dell'archivio nella directory tmp...
Decompressione dell'archivio, ciò potrebbe richiedere del tempo...
Nessun file di metadati da estrarre.
Convalida dei metadati...
Versione corrente: 20191007140446
Versione ripristinata: 20190908234054
Estrazione del file dump...
Creazione delle funzioni mancanti nello schema discourse_functions
Impossibile ripristinare in uno schema diverso, ripristino in loco
Attivazione della modalità sola lettura...
Pausa di sidekiq...
[eliminato molto materiale irrilevante]
Pulizia della cache dei temi
Estrazione degli upload...
Rimappatura degli upload...
Rimappatura di 'uploads/REDACTED' in 'uploads/default'
Ottimizzazione delle icone del sito...
I post verranno rigenerati da un job in background su sidekiq. Vedrai immagini mancanti fino al completamento dell'operazione.
Puoi accelerare il processo eseguendo manualmente "rake posts:rebake_uncooked_posts"
Esecuzione dell'after_restore_hook...
Pulizia dei file temporanei...
Rimozione della funzione dallo schema discourse_functions
Eliminazione della directory tmp '/var/www/discourse/tmp/restores/db8015/2019-10-11-104940'...
Ripresa di sidekiq...
Impostazione dello stato di ripristino completato...
Ho dedicato del tempo a questo bug e volevo aggiornarti sui miei riscontri. In sostanza, ho confermato tutto ciò che hai già detto: il processo di ripristino è il seguente:
Una soluzione rapida sarebbe utilizzare qui @current_db, che contiene ancora il nome corretto, al posto di RailsMultisite::ConnectionManagement.current_db, ma questo non risolve il vero motivo per cui reconnect_database non funziona correttamente.
Hai ragione. Ho rimosso Rake::Task["db:migrate"].invoke da restorer.rb e ho ottenuto il database corretto durante tutto il processo.
Sei un passo avanti a me; il mio piano ora è entrare nel task di migrate e vedere quale passaggio sta interrompendo il processo.
Grazie per aver segnalato _dump, andrò direttamente lì per vedere cosa sta succedendo all’interno.
La correzione è stata unita, grazie per aver individuato il problema. Il comando dump è stato aggiunto perché c’era un problema con le migrazioni multisito. Credo che non importi quale database stiamo usando per eseguire il dump della struttura, dato che tutti i multisito dovrebbero avere la stessa struttura.