Rebuilding sempre falha quando o limite diário do MAXMIND é atingido

Isso pode ser corrigido antes do próximo lançamento, por favor! Estou testando a implantação de novos VPSs (IP diferente a cada vez) e ainda falha duas em cada três vezes.

2 curtidas

Observe que acabamos de enviar uma correção rápida que impediria a falha da reconstrução ao baixar os bancos de dados maxmind.

Assim que o Discourse 3.3 for lançado, reavaliaremos como podemos tornar o download dos bancos de dados Maxmind menos propenso a erros.

4 curtidas

Hm, ainda falha para mim (instalação limpa, não reconstrução)?

I, [2024-07-30T05:19:47.753779 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'
Purging temp files
Bundling assets
I, [2024-07-30T05:19:58.764890 #1059]  INFO -- : Writing /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
I, [2024-07-30T05:19:58.787966 #1059]  INFO -- : Writing /var/www/discourse/public/assets/service-worker-77c5660ded6e2c94a6a5ce2594411b46d0e15a1f5b9065e57b85652d7cbe3ead.js
I, [2024-07-30T05:19:58.797458 #1059]  INFO -- : Writing /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
I, [2024-07-30T05:19:58.807019 #1059]  INFO -- : Writing /var/www/discourse/public/assets/scripts/discourse-test-listen-boot-9b14a0fc65c689577e6a428dcfd680205516fe211700a71c7adb5cbcf4df2cc5.js
rake aborted!
Zlib::BufError: buffer error (Zlib::BufError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `<'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache/file_store.rb:100:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:212:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cache.rb:136:in `set'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:243:in `store_asset'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:185:in `load_from_unloaded'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:60:in `block in load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/loader.rb:44:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/cached_environment.rb:47:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:66:in `find_asset'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:134:in `block in find'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:133:in `find'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/sprockets/manifest.rb:186:in `compile'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:67:in `block (3 levels) in define'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.3/lib/rake/sprocketstask.rb:147:in `with_logger'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sprockets-rails-3.5.1/lib/sprockets/rails/task.rb:66:in `block (2 levels) in define'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
I, [2024-07-30T05:20:01.382260 #1]  INFO -- : Downloading MaxMindDB...

I, [2024-07-30T05:20:01.438870 #1]  INFO -- : Terminating async processes
I, [2024-07-30T05:20:01.444360 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57
2024-07-30 05:20:01.448 UTC [57] LOG:  received fast shutdown request
I, [2024-07-30T05:20:01.449248 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 120
120:signal-handler (1722316801) Received SIGTERM scheduling shutdown...
2024-07-30 05:20:01.512 UTC [57] LOG:  aborting any active transactions
120:M 30 Jul 2024 05:20:01.523 # User requested shutdown...
120:M 30 Jul 2024 05:20:01.526 * Saving the final RDB snapshot before exiting.
2024-07-30 05:20:01.566 UTC [57] LOG:  background worker "logical replication launcher" (PID 72) exited with exit code 1
120:M 30 Jul 2024 05:20:01.586 * DB saved on disk
120:M 30 Jul 2024 05:20:01.589 # Redis is now ready to exit, bye bye...
2024-07-30 05:20:01.598 UTC [67] LOG:  shutting down
2024-07-30 05:20:02.090 UTC [57] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1057 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"precompile", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
c9da27502f7c288ec5465ca82b4830123a3c59003527b8f288457c594576adaa
x86_64 arch detected.

Apenas para confirmar, você seguiu discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub e tem credenciais válidas para o MaxMind?

Sim, instalação padrão, account_id e license_key válidos da MaxMind em app.yml

Só para confirmar, você está no branch tests-passed e não no stable? Acabei de testar com uma chave maxmind inválida e não estou vendo nenhum erro.

Não tenho certeza se o problema em si é mais sobre credenciais incorretas, mas a reconstrução tende a falhar mesmo com as credenciais corretas.

2 curtidas

Sim

Exatamente, estou usando uma chave válida! (segunda tentativa agora mesmo, novo VPS, IP diferente, ainda falha com o mesmo erro).

1 curtida

Recebi o erro ao atualizar o docker pelo admin. Gostaria de saber se o problema é causado pelos arquivos criados. Este erro sempre ocorre da mesma forma e não obtemos erro quando fechamos o maxmind. Existe um problema entre essas duas estruturas e algo está afetando uma à outra:

Começo a pensar que Maxmind é uma pista falsa aqui. O backtrace não aponta para Maxmind de forma alguma e está indicando um erro sendo levantado em sprockets. Terei que investigar mais para ver se consigo reproduzir isso em um droplet.

3 curtidas

Eu penso o mesmo. Maxmind pode não ser um problema, mas sua atividade traz problemas em algumas áreas à tona.

1 curtida

Você está executando isso no DigitalOcean? Se sim, posso saber o número de vCPUs e a RAM que você selecionou?

Não, eu tenho meu próprio servidor e o PostgreSQL está em um servidor separado. Fiz uma anotação aqui, você pode revisá-la:

Quantos de RAM e CPU seu servidor tem? Estou tentando reproduzir isso e tenho reconstruído muitas vezes no meu droplet, mas não consigo encontrar o erro.

25gb de ram servidor principal
20gb de ram servidor postgresql

8 cpu
núcleos de cpu 4

db_shared_buffers: "4096MB"
UNICORN_WORKERS: 8
UNICORN_SIDEKIQ_MAX_RSS: 1500
## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
  after_code:
     - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-question-answer.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-restricted-replies.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-follow.git
#         - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-no-bump.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/spirobel/discourse-matheditor.git
          - git clone https://github.com/discourse/discourse-google-one-tap.git
          - git clone https://github.com/discourse/discourse-ai.git
#         - git clone https://github.com/paviliondev/discourse-custom-wizard.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-subscriptions.git
          - git clone https://github.com/discourse/discourse-assign.git
#         - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
#         - git clone https://github.com/merefield/discourse-chatbot.git

#  after_assets_precompile:
#     - exec:
#        cd: $home
#        cmd:
#          - sudo -E -u discourse bundle exec rake s3:upload_assets
#          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
#          - sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

Tive o problema hoje em uma máquina com (acho que) 16 GB de RAM (mas outras coisas estão rodando) e 12 ou mais threads (posso obter os números exatos amanhã). Parece que o maxmind é uma pista falsa, mas toda vez, desabilitar o maxmind sempre resolve (foi o que fiz hoje).

Mas agora você e eu tentamos adicionar o rescue na função maxmind e isso não está resolvendo.

Talvez seja algo acontecendo na compilação prévia antes?

2 curtidas

Tenho dúvidas sobre isso: assets:precompile

Seguindo esta sequência de eventos e examinando os incidentes que ocorreram entre eles, podemos obter alguma informação:

Agrupamento de ativos

Baixando MaxMindDB..
(Talvez o erro esteja em algum lugar entre)
assets:precompile

Acabei de perceber que baixamos os bancos de dados Maxmind em uma thread em segundo plano enquanto executamos assets:precompile ao mesmo tempo. Com base nos backtraces que estou vendo, tenho uma hipótese de que a thread em segundo plano que usamos para baixar o banco de dados Maxmind está interferindo com assets:precompile de alguma forma.

Vou enviar a correção acima primeiro e não me aprofundar demais na causa raiz, já que vamos mover o download dos bancos de dados Maxmind para fora do processo de build.

5 curtidas

Isso parece uma ótima ideia. Tentarei reativar o MaxMind em alguns sites amanhã.

Posso testar agora? Pois quando a atualização do admin deu erro, eu quis fazer pelo ssh e também deu erro por lá. Se você me disser como fazer, eu posso fazer a primeira tentativa.

1 curtida