Come posso ottenere informazioni sulla versione attuale dal mio backup?

Come menzionato nel titolo, il mio VPS è stato attaccato. Ho cercato di ottenere le informazioni sulla versione corrente di Discourse eseguendo ./discourse-doctor, ma ha fallito.

Fortunatamente, avevo scaricato un backup sul mio computer locale.
Come posso recuperare le informazioni sulla versione corrente da questo backup?
Grazie.

2 Mi Piace

Quale problema stai cercando di risolvere? Puoi ripristinare il backup a qualsiasi versione più recente.

4 Mi Piace

Sto pianificando di reinstallare il sistema operativo e poi configurare la versione precedente di Discourse per evitare problemi di compatibilità dei plugin.

A proposito, se un VPS è stato hackerato, è ancora possibile fare il backup di Discourse? Ho solo un backup automatico di alcuni giorni fa.

Dipende dallo stato in cui l’hanno lasciato. Potresti provare a passare attraverso la console Rails:

cd /var/discourse 
./launcher enter app
discourse backup
cd public/backups/default
scp * user@destination.example.com:

Il nome del file di backup ha il formato forumname-2025-05-22-151843-v20250521053324.tar.gz

La lunga stringa alla fine è la migrazione più recente che è stata eseguita.

Per scoprire a quale commit appartiene,

cd /var/www/discourse
git blame db/migrate/20250521053324*

Ora vedrai un output e la colonna di sinistra contiene l’hash del commit.
Questo è il commit minimo a cui dovrebbe trovarsi il tuo nuovo forum.

(A volte il commit appartiene a un plugin, in tal caso usa locate per trovare il plugin, entra nella sua directory ed esegui la stessa istanza di git blame)

8 Mi Piace

Consiglierei semplicemente di aggiornare all’ultima versione. È più semplice e non c’è rischio. Se non funziona, puoi seguire quelle ottime istruzioni per trovare il commit e ripristinare quello (e riporterai anche ciascun plugin a un commit particolare?).

1 Mi Piace

Ho tentato di eseguire un backup, ma è fallito. L’output è il seguente:

# cd /var/discourse/
/var/discourse# ./launcher enter app
Rilevata architettura x86_64.
/var/www/discourse# discourse backup
Avvio backup...
ERRORE: BackupRestore::OperationRunningError
/var/www/discourse/lib/backup_restore/backuper.rb:70:in `ensure_no_operation_is_running'
/var/www/discourse/lib/backup_restore/backuper.rb:22:in `run'
script/discourse:84:in `backup'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:451:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:28:in `block in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:20:in ` `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in ` <main>'
Eliminazione dei backup vecchi...
Pulizia delle cose...
Rimozione dei file '.tar' residui...
Segnando il backup come completato...
Notifica a 'system' della fine del backup...
Finito!
[FAILED]

Significa che non sarò in grado di eseguire un backup?

Pensa che stia eseguendo un altro backup. Potresti provare a riavviare il contenitore e poi riprovare.

Grazie per il tuo consiglio.
Sono riuscito ad avviare correttamente il backup.
Tuttavia, il processo è bloccato in questo punto da circa 20 minuti (vedi screenshot qui sotto). È normale?

Sì, questa tabella può diventare molto grande a causa di un bug, vedi Clean up user_auth_token_logs?

Se diventa un problema, puoi interrompere il backup, accedere alla console Rails

rails c
UserAuthTokenLog.delete_all

e quindi riavviare il backup.

3 Mi Piace

Grazie per il tuo suggerimento. Ho eseguito con successo il backup dei dati più recenti.
Inoltre, poiché il sistema operativo è già stato reinstallato, come posso ripristinare direttamente lo stato più recente utilizzando il file app.yml e i file di backup? Esiste una documentazione ufficiale a riguardo? Oppure è necessario seguire prima il processo di installazione Docker standard e poi importare il backup per ripristinare tutto?

A proposito, quando ho cercato di scoprire a quale commit corrisponda il mio backup di Discourse, ho ottenuto il seguente output. Sai perché potrebbe succedere?

/var/www/discourse# git blame db/migrate/20240516145911*
fatal: nessun percorso 'db/migrate/20240516145911*' in HEAD

Questo!

Spoiler: appartiene al plugin di chat.

root@testbeta:/var/www/discourse# locate 202405161459
/var/www/discourse/plugins/chat/db/migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@testbeta:/var/www/discourse# cd plugins/chat/
root@testbeta:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*
1 Mi Piace

Grazie mille!
Non sono molto sicuro :pensieroso: questa metodologia genera un commit direttamente al repository di Discourse, piuttosto che al plugin della chat? Se sì, potresti spiegare il meccanismo dietro di esso?

Sembra che potrei seguire questa guida?
https://meta.discourse.org/t/restore-a-backup-from-the-command-line/

2 Mi Piace

[citazione=“Alienazk, post:10, topic:367077”]
20240516145911
[/citazione]

Ho provato il metodo che mi hai consigliato, ma ho riscontrato il seguente problema.
Potresti dare un’occhiata e farmi sapere cosa potrebbe essere andato storto?

/var/www/discourse# locate 20240516145911
/shared/backups/default/discourse-2025-05-24-113557-v20240516145911.tar.gz
/var/www/discourse/plugins/chat/db/post_migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@tartali-app:/var/www/discourse# cd plugins/chat/
root@tartali-app:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*
fatal: no such path 'plugins/chat/db/migrate/20240516145911*' in HEAD```

Mi scusi. L’ho ottenuto tramite git blame db/post_migrate/20240516145911*Questo è l’output:

root@tartali-app:/var/www/discourse/plugins/chat# git blame db/post_migrate/20240516145911*
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.42 KiB | 14.20 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 21.91 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.90 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.82 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.78 KiB | 23.44 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.39 KiB | 22.92 MiB/s, done..
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (422/422), fatto.
remote: Compressing objects: 100% (421/421), fatto.
remote: Total 2571 (delta 2), riutilizzato 1 (delta 1), pack-reused 2149 (da 1)
Ricezione oggetti: 100% (2571/2571), 1008.39 KiB | 22.41 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (404/404), fatto.
remote: Compressing objects: 100% (404/404), fatto.
remote: Total 2571 (delta 3), riutilizzato 0 (delta 0), pack-reused 2167 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.74 KiB | 21.91 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (422/422), fatto.
remote: Compressing objects: 100% (421/421), fatto.
remote: Total 2571 (delta 2), riutilizzato 1 (delta 1), pack-reused 2149 (da 1)
Ricezione oggetti: 100% (2571/2571), 1008.40 KiB | 22.92 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (422/422), fatto.
remote: Compressing objects: 100% (421/421), fatto.
remote: Total 2571 (delta 2), riutilizzato 1 (delta 1), pack-reused 2149 (da 1)
Ricezione oggetti: 100% (2571/2571), 1008.39 KiB | 22.41 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (414/414), fatto.
remote: Compressing objects: 100% (414/414), fatto.
Ricezione oggetti: 100% (2571/2571), 1007.78 KiB | 22.90 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Total 2571 (delta 3), riutilizzato 0 (delta 0), pack-reused 2157 (da 1)
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (403/403), fatto.
remote: Compressing objects: 100% (403/403), fatto.
remote: Total 2571 (delta 3), riutilizzato 0 (delta 0), pack-reused 2168 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.66 KiB | 22.39 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (413/413), fatto.
remote: Compressing objects: 100% (413/413), fatto.
remote: Total 2571 (delta 3), riutilizzato 0 (delta 0), pack-reused 2158 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.70 KiB | 12.44 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (412/412), fatto.
remote: Compressing objects: 100% (412/412), fatto.
remote: Total 2571 (delta 3), riutilizzato 0 (delta 0), pack-reused 2159 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.71 KiB | 22.39 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerating objects: 2571, fatto.
remote: Counting objects: 100% (419/419), fatto.
remote: Compressing objects: 100% (418/418), fatto.
remote: Total 2571 (delta 2), riutilizzato 1 (delta 1), pack-reused 2152 (da 1)
Ricezione oggetti: 100% (2571/2571), 1008.31 KiB | 21.92 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerating objects: 2571, fattoremote: Conteggio oggetti: 100% (404/404), fatto.
remote: Compressione oggetti: 100% (404/404), fatto.
remote: Totale 2571 (delta 3), riutilizzati 0 (delta 0), riutilizzati dal pacchetto 2167 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.66 KiB | 22.90 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione oggetti: 2571, fatto.
remote: Conteggio oggetti: 100% (414/414), fatto.
remote: Compressione oggetti: 100% (414/414), fatto.
remote: Totale 2571 (delta 3), riutilizzati 0 (delta 0), riutilizzati dal pacchetto 2157 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.70 KiB | 12.00 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione oggetti: 2571, fatto.
remote: Conteggio oggetti: 100% (412/412), fatto.
remote: Compressione oggetti: 100% (412/412), fatto.
remote: Totale 2571 (delta 3), riutilizzati 0 (delta 0), riutilizzati dal pacchetto 2159 (da 1)
Ricezione oggetti: 100% (2571/2571), 1007.70 KiB | 22.39 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (416/416), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.98 KiB | 22.89 MiB/s, fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), riutilizzati dal pacchetto 2153 (da 1)
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (418/418), fatto.
remote: Compressione oggetti: 100% (417/417), fatto.
Ricezione oggetti: 100% (2569/2569), 1007.58 KiB | 22.90 MiB/s, fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), riutilizzati dal pacchetto 2151 (da 1)
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (405/405), fatto.
remote: Compressione oggetti: 100% (405/405), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), riutilizzati dal pacchetto 2164 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.90 KiB | 22.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (417/417), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), riutilizzati dal pacchetto 2152 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.75 KiB | 20.57 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (417/417), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), riutilizzati dal pacchetto 2152 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.74 KiB | 23.44 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (417/417), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), riutilizzati dal pacchetto 2152 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.55 KiB | 23.43 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione oggetti: 2569, fatto.
remote: Conteggio oggetti: 100% (417/417), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2152 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.56 KiB | 23.43 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (418/418), fatto.
remote: Compressione degli oggetti: 100% (417/417), fatto.
remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2151 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.56 KiB | 10.72 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2164 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.91 KiB | 22.38 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione degli oggetti: 100% (404/404), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2165 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.90 KiB | 22.38 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione degli oggetti: 100% (404/404), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.88 KiB | 22.88 MiB/s, fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2165 (da 1)
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.89 KiB | 5.47 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (415/415), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.89 KiB | 22.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2154 (da 1)
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (415/415), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.89 KiB | 21.42 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2154 (da 1)
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.50 KiB | 23.43 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 13.98 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 19.36 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (417/417), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), pack-riutilizzati 2152 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1007.29 KiB | 15.50 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 16.50 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 22.37 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (417/417), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), pack-riutilizzati 2152 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione degli oggetti: 100% (405/405), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 21.42 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
Ricezione degli oggetti: 100% (2569/2569), 1006.67 KiB | 20.13 MiB/s, fatto..
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2153 (da 1)
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (417/417), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2152 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1007.29 KiB | 21.43 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2153 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.68 KiB | 21.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (415/415), fatto.
remote: Compressione degli oggetti: 100% (414/414), fatto.
Ricezione degli oggetti: 100% (2569/2569), 1007.28 KiB | 23.42 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2154 (da 1)
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (415/415), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2154 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.68 KiB | 17.98 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (417/417), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
Ricezione degli oggetti: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Totale 2569 (delta 2), riutilizzato 1 (delta 1), pack-riutilizzato 2152 (da 1)
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione degli oggetti: 100% (404/404), fatto.
remote: Totale 2569 (delta 3), riutilizzato 0 (delta 0), pack-riutilizzato 2165 (da 1)
Ricezione degli oggetti: 100% (2569/2569), 1006.63 KiB | 20.54 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Imballaggio automatico del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.68 KiB | 22.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione degli oggetti: 100% (404/404), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2165 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.63 KiB | 19.74 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (415/415), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2154 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.68 KiB | 14.18 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (415/415), fatto.
Ricezione oggetti: 100% (2569/2569), 1007.14 KiB | 22.89 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
remote: Totale 2569 (delta 2), riutilizzati 1 (delta 1), pack-riutilizzati 2153 (da 1)
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.54 KiB | 22.37 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione degli oggetti: 100% (404/404), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.49 KiB | 22.37 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2165 (da 1)
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione degli oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.53 KiB | 22.37 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattazione del repository in background per prestazioni ottimali.
Vedere "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.remote: Compressione oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.53 KiB | 18.99 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione oggetti: 100% (404/404), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.51 KiB | 22.37 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2165 (da 1)
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (404/404), fatto.
remote: Compressione oggetti: 100% (404/404), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.51 KiB | 22.88 MiB/s, fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2165 (da 1)
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (417/417), fatto.
remote: Compressione oggetti: 100% (417/417), fatto.
remote: Totale 2569 (delta 2), riutilizzati 0 (delta 0), pack-riutilizzati 2152 (da 1)
Ricezione oggetti: 100% (2569/2569), 1007.17 KiB | 13.80 MiB/s, fatto.
Risoluzione dei delta: 100% (2/2), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.56 KiB | 22.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (416/416), fatto.
remote: Compressione oggetti: 100% (416/416), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2153 (da 1)
Ricezione oggetti: 100% (2569/2569), 1006.56 KiB | 11.44 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
remote: Enumerazione degli oggetti: 2569, fatto.
remote: Conteggio degli oggetti: 100% (405/405), fatto.
remote: Compressione oggetti: 100% (405/405), fatto.
Ricezione oggetti: 100% (2569/2569), 1006.45 KiB | 21.88 MiB/s, fatto.
Risoluzione dei delta: 100% (3/3), fatto.
remote: Totale 2569 (delta 3), riutilizzati 0 (delta 0), pack-riutilizzati 2164 (da 1)
Auto-compattamento del repository in background per prestazioni ottimali.
Consulta "git help gc" per la manutenzione manuale.
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  3) class UpdateUserOptionsForThreadTitlePrompts 		Modifica le opzioni utente per i prompt del titolo della discussione 	ActiveRecord::Migration[7.0]
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id >= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
:...skipping...
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  3) class UpdateUserOptionsForThreadTitlePrompts 	ActiveRecord::Migration[7.0]
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400  9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id >= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
~

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