Comment puis-je obtenir les informations de version actuelle à partir de ma sauvegarde ?

Comme mentionné dans le titre, mon VPS a été attaqué. J’ai essayé d’obtenir les informations de la version actuelle de discourse en exécutant ./discourse-doctor, mais cela a échoué.

Heureusement, j’avais téléchargé une sauvegarde sur ma machine locale.
Comment puis-je récupérer les informations de version actuelles à partir de cette sauvegarde ?
Merci.

2 « J'aime »

Quel problème essayez-vous de résoudre ? Vous pouvez restaurer la sauvegarde dans n’importe quelle version plus récente.

4 « J'aime »

Je prévois de réinstaller le système d’exploitation puis de configurer la version précédente de Discourse pour éviter tout problème de compatibilité avec les plugins.

Au fait, si un VPS a été piraté, est-il toujours possible de sauvegarder Discourse ? Je n’ai qu’une sauvegarde automatique datant de quelques jours.

Cela dépend de l’état dans lequel ils l’ont laissé. Vous pourriez essayer de passer par la console Rails :

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

Le nom de votre fichier de sauvegarde a le format forumname-2025-05-22-151843-v20250521053324.tar.gz

La longue chaîne à la fin est la dernière migration qui a été exécutée.

Pour savoir à quel commit elle appartient,

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

Vous verrez maintenant une sortie et la colonne de gauche contient le hachage du commit.
C’est le commit minimal auquel votre nouveau forum devrait être.

(Parfois, le commit appartient à un plugin, dans ce cas, utilisez locate pour trouver le plugin, allez dans son répertoire et faites la même stanza git blame)

8 « J'aime »

Je vous recommanderais simplement de mettre à jour vers la dernière version. C’est le plus facile, et il n’y a aucun risque. Si cela ne fonctionne pas, alors vous pouvez suivre ces excellentes instructions pour trouver le commit et revenir à celui-là (et allez-vous aussi restaurer chacun des plugins à un certain commit ?).

1 « J'aime »

J’ai essayé d’effectuer une sauvegarde, mais elle a échoué. La sortie est la suivante :

# cd /var/discourse/
/var/discourse# ./launcher enter app
détection de l'architecture x86_64.
/var/www/discourse# discourse backup
Démarrage de la sauvegarde...
EXCEPTION : 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>`'
Suppression des anciennes sauvegardes...
Nettoyage...
Suppression des fichiers '.tar' restants...
Marquage de la sauvegarde comme terminée...
Notification de la 'système' de la fin de la sauvegarde...
Terminé!
[ÉCHEC]

Cela signifie-t-il que je ne pourrai pas effectuer de sauvegarde ?

Il pense qu’une autre sauvegarde est en cours d’exécution. Vous pouvez essayer de redémarrer le conteneur puis de réessayer.

Merci pour vos conseils.
J’ai réussi à démarrer la sauvegarde avec succès.
Cependant, le processus est bloqué à ce stade depuis environ 20 minutes (voir capture d’écran ci-dessous). Est-ce normal ?

Oui, ce tableau peut devenir très volumineux en raison d’un bug, voir Clean up user_auth_token_logs?

Si cela devient un problème, vous pouvez arrêter la sauvegarde, entrer dans la console Rails

rails c
UserAuthTokenLog.delete_all

puis redémarrer la sauvegarde.

3 « J'aime »

Merci pour votre suggestion. J’ai réussi à sauvegarder les données les plus récentes.
De plus, puisque le système d’exploitation a déjà été réinstallé, comment puis-je restaurer l’état le plus récent directement en utilisant le fichier app.yml et les fichiers de sauvegarde ? Existe-t-il une documentation officielle à ce sujet ? Ou dois-je passer d’abord par le processus d’installation Docker standard, puis importer la sauvegarde pour tout restaurer ?

Au fait, lorsque j’ai essayé de savoir à quel commit correspond ma sauvegarde Discourse, j’ai reçu la sortie suivante. Avez-vous une idée pourquoi cela pourrait être ?

/var/www/discourse# git blame db/migrate/20240516145911*
fatal: aucun chemin de ce type 'db/migrate/20240516145911*' dans HEAD

Ça !

Spoiler : il appartient au plugin de 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 « J'aime »

Merci beaucoup !
Je ne suis pas tout à fait sûr :thinking: cette méthode génère-t-elle un commit dans le dépôt Discourse lui-même, plutôt que dans le plugin de chat ? Si oui, pourriez-vous expliquer le mécanisme sous-jacent ?

Il semble que je puisse suivre ce guide ?
https://meta.discourse.org/t/restore-a-backup-from-the-command-line/

2 « J'aime »

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

J’ai essayé la méthode que vous avez recommandée, mais j’ai rencontré le problème suivant.
Pourriez-vous jeter un coup d’œil et me dire ce qui a pu mal se passer ?

/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```

Désolé. Je l’ai obtenu par git blame db/post_migrate/20240516145911*Voici la sortie:

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.Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.39 KiB | 22.41 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (404/404), terminé.
remote: Compression des objets : 100 % (404/404), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2167 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.74 KiB | 21.91 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.40 KiB | 22.92 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (422/422), terminé.
remote: Compression des objets : 100 % (421/421), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2149 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.39 KiB | 22.41 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (414/414), terminé.
remote: Compression des objets : 100 % (414/414), terminé.
Réception des objets : 100 % (2571/2571), 1007.78 KiB | 22.90 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2157 (à partir de 1)
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (403/403), terminé.
remote: Compression des objets : 100 % (403/403), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2168 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.66 KiB | 22.39 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (413/413), terminé.
remote: Compression des objets : 100 % (413/413), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2158 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.70 KiB | 12.44 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (412/412), terminé.
remote: Compression des objets : 100 % (412/412), terminé.
remote: Total 2571 (delta 3), réutilisé 0 (delta 0), pack-reused 2159 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1007.71 KiB | 22.39 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
remote: Énumération des objets : 2571, terminé.
remote: Comptage des objets : 100 % (419/419), terminé.
remote: Compression des objets : 100 % (418/418), terminé.
remote: Total 2571 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (à partir de 1)
Réception des objets : 100 % (2571/2571), 1008.31 KiB | 21.92 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Énumération des objets : 2571, terminé.remote: Counting objects: 100% (404/404), done.
remote: Compressing objects: 100% (404/404), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2167 (from 1)
Receiving objects: 100% (2571/2571), 1007.66 KiB | 22.90 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (414/414), done.
remote: Compressing objects: 100% (414/414), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2157 (from 1)
Receiving objects: 100% (2571/2571), 1007.70 KiB | 12.00 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (412/412), done.
remote: Compressing objects: 100% (412/412), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2159 (from 1)
Receiving objects: 100% (2571/2571), 1007.70 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (416/416), done.
remote: Compressing objects: 100% (416/416), done.
Receiving objects: 100% (2569/2569), 1006.98 KiB | 22.89 MiB/s, done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2153 (from 1)
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (418/418), done.
remote: Compressing objects: 100% (417/417), done.
Receiving objects: 100% (2569/2569), 1007.58 KiB | 22.90 MiB/s, done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2151 (from 1)
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.90 KiB | 22.88 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.75 KiB | 20.57 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.74 KiB | 23.44 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.55 KiB | 23.43 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.56 KiB | 23.43 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (418/418), terminé.
remote	: Compression des objets: 100% (417/417), terminé.
remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2151 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.56 KiB | 10.72 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (405/405), terminé.
remote	: Compression des objets: 100% (405/405), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.91 KiB | 22.38 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (404/404), terminé.
remote	: Compression des objets: 100% (404/404), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2165 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.90 KiB | 22.38 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (404/404), terminé.
remote	: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.88 KiB | 22.88 MiB/s, terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2165 (à partir de 1)
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (416/416), terminé.
remote	: Compression des objets: 100% (416/416), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.89 KiB | 5.47 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (415/415), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1006.89 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2154 (à partir de 1)
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (415/415), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1006.89 KiB | 21.42 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote	: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2154 (à partir de 1)
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (416/416), terminé.
remote	: Compression des objets: 100% (415/415), terminé.
remote	: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.50 KiB | 23.43 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote	: Énumération des objets: 2569, terminé.
remote	: Comptage des objets: 100% (405/405), terminé.
remote	: Compression des objets: 100% (405/405), terminé.remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 13.98 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 19.36 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (417/417), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (de 1)
Réception des objets: 100% (2569/2569), 1007.29 KiB | 15.50 MiB/s, fait.
Résolution des deltas: 100% (2/2), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 16.50 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
Réception des objets: 100% (2569/2569), 1006.63 KiB | 22.37 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (417/417), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-réutilisé 2152 (de 1)
Réception des objets: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, fait.
Résolution des deltas: 100% (2/2), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (405/405), terminé.
remote: Compressing objects: 100% (405/405), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-réutilisé 2164 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 21.42 MiB/s, fait.
Résolution des deltas: 100% (3/3), fait.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
Réception des objets: 100% (2569/2569), 1006.67 KiB | 20.13 MiB/s, fait..
Résolution des deltas : 100 % (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (417/417), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (from 1)
Réception des objets : 100 % (2569/2569), 1007.29 KiB | 21.43 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (416/416), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (from 1)
Réception des objets : 100 % (2569/2569), 1006.68 KiB | 21.88 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (415/415), terminé.
remote: Compression des objets : 100 % (414/414), terminé.
Réception des objets : 100 % (2569/2569), 1007.28 KiB | 23.42 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2154 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (415/415), terminé.
remote: Compression des objets : 100 % (415/415), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2154 (from 1)
Réception des objets : 100 % (2569/2569), 1006.68 KiB | 17.98 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (417/417), terminé.
remote: Compression des objets : 100 % (416/416), terminé.
Réception des objets : 100 % (2569/2569), 1007.29 KiB | 22.89 Mio/s, terminé.
Résolution des deltas : 100 % (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2152 (from 1)
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (404/404), terminé.
remote: Compression des objets : 100 % (404/404), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (from 1)
Réception des objets : 100 % (2569/2569), 1006.63 KiB | 20.54 Mio/s, terminé.
Résolution des deltas : 100 % (3/3), terminé.
Auto-compression du référentiel en arrière-plan pour des performances optimales.
Voir « git help gc » pour l’entretien manuel.
remote: Énumération des objets : 2569, terminé.
remote: Comptage des objets : 100 % (416/416), terminé.
remote: Compression des objets : 100 % (416/416), terminé.remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.68 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (404/404), terminé.
remote: Compressing objects: 100% (404/404), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (de 1)
Réception des objets: 100% (2569/2569), 1006.63 KiB | 19.74 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (415/415), terminé.
remote: Compressing objects: 100% (415/415), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2154 (de 1)
Réception des objets: 100% (2569/2569), 1006.68 KiB | 14.18 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (415/415), terminé.
Réception des objets: 100% (2569/2569), 1007.14 KiB | 22.89 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
remote: Total 2569 (delta 2), réutilisé 1 (delta 1), pack-reused 2153 (de 1)
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.54 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (404/404), terminé.
remote: Compressing objects: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.49 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (de 1)
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.
remote: Compressing objects: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (de 1)
Réception des objets: 100% (2569/2569), 1006.53 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto empaquetage du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Enumerating objects: 2569, terminé.
remote: Counting objects: 100% (416/416), terminé.remote: Compression des objets: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.53 KiB | 18.99 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (404/404), terminé.
remote: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.51 KiB | 22.37 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (404/404), terminé.
remote: Compression des objets: 100% (404/404), terminé.
Réception des objets: 100% (2569/2569), 1006.51 KiB | 22.88 MiB/s, terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2165 (à partir de 1)
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (417/417), terminé.
remote: Compression des objets: 100% (417/417), terminé.
remote: Total 2569 (delta 2), réutilisé 0 (delta 0), pack-reused 2152 (à partir de 1)
Réception des objets: 100% (2569/2569), 1007.17 KiB | 13.80 MiB/s, terminé.
Résolution des deltas: 100% (2/2), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (416/416), terminé.
remote: Compression des objets: 100% (416/416), terminé.
Réception des objets: 100% (2569/2569), 1006.56 KiB | 22.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (416/416), terminé.
remote: Compression des objets: 100% (416/416), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2153 (à partir de 1)
Réception des objets: 100% (2569/2569), 1006.56 KiB | 11.44 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel.
remote: Énumération des objets: 2569, terminé.
remote: Comptage des objets: 100% (405/405), terminé.
remote: Compression des objets: 100% (405/405), terminé.
Réception des objets: 100% (2569/2569), 1006.45 KiB | 21.88 MiB/s, terminé.
Résolution des deltas: 100% (3/3), terminé.
remote: Total 2569 (delta 3), réutilisé 0 (delta 0), pack-reused 2164 (à partir de 1)
Auto packing du référentiel en arrière-plan pour des performances optimales.
Voir "git help gc" pour l'entretien ménager manuel..
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 
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 
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.