Como posso obter informações sobre a versão atual do meu backup?

Como mencionado no título, minha VPS foi atacada. Tentei obter informações sobre a versão atual do discourse executando ./discourse-doctor, mas falhou.

Felizmente, fiz o download de um backup para minha máquina local.
Como posso recuperar as informações da versão atual a partir deste backup?
Obrigado.

2 curtidas

Qual problema você está tentando resolver? Você pode restaurar o backup para qualquer versão mais recente.

4 curtidas

Estou planejando reinstalar o sistema operacional e, em seguida, configurar a versão anterior do Discourse para evitar problemas de compatibilidade com plugins.

A propósito, se um VPS foi hackeado, ainda é possível fazer backup do Discourse? Eu tenho apenas um backup automático de há alguns dias.

Isso depende do estado em que eles o deixaram. Você pode tentar passar pelo console do rails:

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

O nome do arquivo de backup tem o formato nomedofórum-2025-05-22-151843-v20250521053324.tar.gz

A longa string no final é a migração mais recente que foi executada.

Para descobrir a qual commit ela pertence,

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

Agora você verá alguma saída e a coluna da esquerda contém o hash do commit.
Este é o commit mínimo em que seu novo fórum deve estar.

(Às vezes, o commit pertence a um plugin, nesse caso use locate para encontrar o plugin, entre em seu diretório e faça o mesmo comando git blame)

8 curtidas

Eu recomendaria apenas atualizar para a versão mais recente. É mais fácil, e não há risco. Se não funcionar, então você pode seguir aquelas excelentes instruções para encontrar o commit e restaurar para aquele (e você também vai restaurar cada um dos plugins para algum commit específico?).

1 curtida

Eu tentei fazer um backup, mas ele falhou. A saída é a seguinte:

# cd /var/discourse/
/var/discourse# ./launcher enter app
detectado arquitetura x86_64.
/var/www/discourse# discourse backup
Iniciando backup...
EXCEÇÃO: 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>'
Deletando backups antigos...
Limpando as coisas...
Removendo sobras '.tar'...
Marcando backup como finalizado...
Notificando 'sistema' sobre o fim do backup...
Concluído!
[FALHADO]

Isso significa que não poderei fazer um backup?

Ele acha que outro backup está em execução. Você pode tentar reiniciar o contêiner e depois tentar novamente.

[quote="RGJ, post:4, topic:367077"]
`backup de discourse`
[/quote]

Obrigado pelo conselho.
Consegui iniciar o backup com sucesso.
No entanto, o processo está travado neste ponto há cerca de 20 minutos (veja a captura de tela abaixo). Isso é normal?
![A imagem mostra linhas repetitivas de código registrando mensagens "pg_dump" para processar e fazer dump de dados de várias tabelas dentro de um banco de dados. (Título gerado por IA)|690x310](upload://AlB9IBARoGFWZKc5l5oPAMixjap.jpeg)

Sim, esta tabela pode ficar muito grande devido a um bug, veja Clean up user_auth_token_logs?

Se isso se tornar um problema, você pode interromper o backup, entrar no console do Rails

rails c
UserAuthTokenLog.delete_all

e, em seguida, reiniciar o backup.

3 curtidas

Obrigado pela sua sugestão. Consegui fazer o backup dos dados mais recentes com sucesso.
Além disso, como o sistema operacional já foi reinstalado, como posso restaurar o estado mais recente diretamente usando o app.yml e os arquivos de backup? Existe alguma documentação oficial para isso? Ou preciso passar pelo processo padrão de instalação do Docker primeiro e, depois, importar o backup para restaurar tudo?

A propósito, quando tentei descobrir a qual commit meu backup do Discourse corresponde, obtive a seguinte saída. Alguma ideia do motivo?

/var/www/discourse# git blame db/migrate/20240516145911*
fatal: no such path 'db/migrate/20240516145911*' in HEAD

Isso!

Spoiler: pertence ao 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 curtida

Muito obrigado!
Não tenho certeza :pensando: esse método gera um commit para o repositório do Discourse em si, ao invés do plugin de chat? Se sim, você poderia explicar o mecanismo por trás disso?

Parece que eu poderia seguir este guia?
https://meta.discourse.org/t/restore-a-backup-from-the-command-line/

2 curtidas

Tentei o método que você recomendou, mas encontrei o seguinte problema.
Você se importaria de dar uma olhada e me dizer o que pode ter dado errado?

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

Desculpe. Eu consegui com git blame db/post_migrate/20240516145911*Este é o resultado:

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.Resolvendo deltas: 100% (2/2), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (422/422), feito.
remoto: Comprimindo objetos: 100% (421/421), feito.
remoto: Total 2571 (delta 2), reutilizado 1 (delta 1), pacote reutilizado 2149 (de 1)
Recebendo objetos: 100% (2571/2571), 1008.39 KiB | 22.41 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (404/404), feito.
remoto: Comprimindo objetos: 100% (404/404), feito.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2167 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.74 KiB | 21.91 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (422/422), feito.
remoto: Comprimindo objetos: 100% (421/421), feito.
remoto: Total 2571 (delta 2), reutilizado 1 (delta 1), pacote reutilizado 2149 (de 1)
Recebendo objetos: 100% (2571/2571), 1008.40 KiB | 22.92 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (422/422), feito.
remoto: Comprimindo objetos: 100% (421/421), feito.
remoto: Total 2571 (delta 2), reutilizado 1 (delta 1), pacote reutilizado 2149 (de 1)
Recebendo objetos: 100% (2571/2571), 1008.39 KiB | 22.41 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (414/414), feito.
remoto: Comprimindo objetos: 100% (414/414), feito.
Recebendo objetos: 100% (2571/2571), 1007.78 KiB | 22.90 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2157 (de 1)
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (403/403), feito.
remoto: Comprimindo objetos: 100% (403/403), feito.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2168 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.66 KiB | 22.39 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (413/413), feito.
remoto: Comprimindo objetos: 100% (413/413), feito.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2158 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.70 KiB | 12.44 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (412/412), feito.
remoto: Comprimindo objetos: 100% (412/412), feito.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2159 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.71 KiB | 22.39 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Enumerando objetos: 2571, feito.
remoto: Contando objetos: 100% (419/419), feito.
remoto: Comprimindo objetos: 100% (418/418), feito.
remoto: Total 2571 (delta 2), reutilizado 1 (delta 1), pacote reutilizado 2152 (de 1)
Recebendo objetos: 100% (2571/2571), 1008.31 KiB | 21.92 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remoto: Enumerando objetos: 2571, feitoremoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), reempacotado 2167 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.66 KiB | 22.90 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Enumerando objetos: 2571, concluído.
remoto: Contando objetos: 100% (414/414), concluído.
remoto: Comprimindo objetos: 100% (414/414), concluído.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), reempacotado 2157 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.70 KiB | 12.00 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Enumerando objetos: 2571, concluído.
remoto: Contando objetos: 100% (412/412), concluído.
remoto: Comprimindo objetos: 100% (412/412), concluído.
remoto: Total 2571 (delta 3), reutilizado 0 (delta 0), reempacotado 2159 (de 1)
Recebendo objetos: 100% (2571/2571), 1007.70 KiB | 22.39 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
Recebendo objetos: 100% (2569/2569), 1006.98 KiB | 22.89 MiB/s, concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reempacotado 2153 (de 1)
Resolvendo deltas: 100% (3/3), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (418/418), concluído.
remoto: Comprimindo objetos: 100% (417/417), concluído.
Recebendo objetos: 100% (2569/2569), 1007.58 KiB | 22.90 MiB/s, concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reempacotado 2151 (de 1)
Resolvendo deltas: 100% (2/2), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (405/405), concluído.
remoto: Comprimindo objetos: 100% (405/405), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reempacotado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.90 KiB | 22.88 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reempacotado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.75 KiB | 20.57 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reempacotado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.74 KiB | 23.44 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reempacotado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.55 KiB | 23.43 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.remote: Total 2569 (delta 2), reutilizado 1 (delta 1), pack-reutilizado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.56 KiB | 23.43 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (418/418), feito.
remote: Comprimindo objetos: 100% (417/417), feito.
remote: Total 2569 (delta 2), reutilizado 1 (delta 1), pack-reutilizado 2151 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.56 KiB | 10.72 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (405/405), feito.
remote: Comprimindo objetos: 100% (405/405), feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.91 KiB | 22.38 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (404/404), feito.
remote: Comprimindo objetos: 100% (404/404), feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2165 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.90 KiB | 22.38 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (404/404), feito.
remote: Comprimindo objetos: 100% (404/404), feito.
Recebendo objetos: 100% (2569/2569), 1006.88 KiB | 22.88 MiB/s, feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2165 (de 1)
Resolvendo deltas: 100% (3/3), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (416/416), feito.
remote: Comprimindo objetos: 100% (416/416), feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.89 KiB | 5.47 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (415/415), feito.
remote: Comprimindo objetos: 100% (415/415), feito.
Recebendo objetos: 100% (2569/2569), 1006.89 KiB | 22.88 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2154 (de 1)
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (415/415), feito.
remote: Comprimindo objetos: 100% (415/415), feito.
Recebendo objetos: 100% (2569/2569), 1006.89 KiB | 21.42 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remote: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2154 (de 1)
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (416/416), feito.
remote: Comprimindo objetos: 100% (415/415), feito.
remote: Total 2569 (delta 2), reutilizado 1 (delta 1), pack-reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.50 KiB | 23.43 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
remote: Enumerando objetos: 2569, feito.
remote: Contando objetos: 100% (405/405), feito.
remote: Comprimindo objetos: 100% (405/405), feito.remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 13.98 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (405/405), feito.
remoto: Comprimindo objetos: 100% (405/405), feito.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 19.36 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (417/417), feito.
remoto: Comprimindo objetos: 100% (416/416), feito.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reembalado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.29 KiB | 15.50 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (405/405), feito.
remoto: Comprimindo objetos: 100% (405/405), feito.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 16.50 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (405/405), feito.
remoto: Comprimindo objetos: 100% (405/405), feito.
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 22.37 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2164 (de 1)
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (417/417), feito.
remoto: Comprimindo objetos: 100% (416/416), feito.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reembalado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, feito.
Resolvendo deltas: 100% (2/2), feito.
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (405/405), feito.
remoto: Comprimindo objetos: 100% (405/405), feito.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2164 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 21.42 MiB/s, feito.
Resolvendo deltas: 100% (3/3), feito.
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, feito.
remoto: Contando objetos: 100% (416/416), feito.
remoto: Comprimindo objetos: 100% (416/416), feito.
Recebendo objetos: 100% (2569/2569), 1006.67 KiB | 20.13 MiB/s, feito..
Resolvendo deltas: 100% (3/3), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2153 (de 1)
Empacotando automaticamente o repositório em segundo plano para um desempenho ideal.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reembalado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007.29 KiB | 21.43 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.68 KiB | 21.88 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (415/415), concluído.
remoto: Comprimindo objetos: 100% (414/414), concluído.
Recebendo objetos: 100% (2569/2569), 1007.28 KiB | 23.42 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reembalado 2154 (de 1)
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (415/415), concluído.
remoto: Comprimindo objetos: 100% (415/415), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2154 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.68 KiB | 17.98 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
Recebendo objetos: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), reembalado 2152 (de 1)
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), reembalado 2165 (de 1)
Recebendo objetos: 100% (2569/2569), 1006.63 KiB | 20.54 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para um desempenho ótimo.
Veja "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,68 KiB | 22,88 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2165 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,63 KiB | 19,74 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (415/415), concluído.
remoto: Comprimindo objetos: 100% (415/415), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2154 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,68 KiB | 14,18 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (415/415), concluído.
Recebendo objetos: 100% (2569/2569), 1007,14 KiB | 22,89 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
remoto: Total 2569 (delta 2), reutilizado 1 (delta 1), pacote reutilizado 2153 (de 1)
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,54 KiB | 22,37 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
Recebendo objetos: 100% (2569/2569), 1006,49 KiB | 22,37 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2165 (de 1)
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pacote reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,53 KiB | 22,37 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotando automaticamente o repositório em segundo plano para otimizar o desempenho.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,53 KiB | 18,99 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
Recebendo objetos: 100% (2569/2569), 1006,51 KiB | 22,37 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2165 (de 1)
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (404/404), concluído.
remoto: Comprimindo objetos: 100% (404/404), concluído.
Recebendo objetos: 100% (2569/2569), 1006,51 KiB | 22,88 MiB/s, concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2165 (de 1)
Resolvendo deltas: 100% (3/3), concluído.
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (417/417), concluído.
remoto: Comprimindo objetos: 100% (417/417), concluído.
remoto: Total 2569 (delta 2), reutilizado 0 (delta 0), pack-reutilizado 2152 (de 1)
Recebendo objetos: 100% (2569/2569), 1007,17 KiB | 13,80 MiB/s, concluído.
Resolvendo deltas: 100% (2/2), concluído.
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
Recebendo objetos: 100% (2569/2569), 1006,56 KiB | 22,88 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2153 (de 1)
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (416/416), concluído.
remoto: Comprimindo objetos: 100% (416/416), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2153 (de 1)
Recebendo objetos: 100% (2569/2569), 1006,56 KiB | 11,44 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual.
remoto: Enumerando objetos: 2569, concluído.
remoto: Contando objetos: 100% (405/405), concluído.
remoto: Comprimindo objetos: 100% (405/405), concluído.
Recebendo objetos: 100% (2569/2569), 1006,45 KiB | 21,88 MiB/s, concluído.
Resolvendo deltas: 100% (3/3), concluído.
remoto: Total 2569 (delta 3), reutilizado 0 (delta 0), pack-reutilizado 2164 (de 1)
Empacotamento automático do repositório em segundo plano para um desempenho ideal.
Consulte "git help gc" para manutenção manual..
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
:...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.