La reconstrucción siempre falla cuando se agota el límite diario de MAXMIND

¿Se podría solucionar esto antes del próximo lanzamiento, por favor! Estoy probando el despliegue de nuevos VPS (IP diferente cada vez) y todavía falla dos de cada tres veces.

2 Me gusta

Tenga en cuenta que acabamos de enviar una corrección rápida que evitaría que la reconstrucción falle cuando la descarga de las bases de datos de Maxmind falle.

Una vez que se lance Discourse 3.3, volveremos a examinar cómo podemos hacer que la descarga de las bases de datos de Maxmind sea menos propensa a errores.

4 Me gusta

Hm, todavía falla para mí (instalación limpia, no reconstrucción)?

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.

Solo para confirmar, ¿seguiste discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub y tienes credenciales válidas para maxmind?

Sí, instalación estándar, account_id y license_key de MaxMind válidos en app.yml

Solo para confirmar, ¿estás en la rama tests-passed y no en stable? Acabo de probarlo con una clave maxmind no válida y no veo ningún error.

No estoy seguro de si el problema en sí tiene que ver con credenciales incorrectas, pero la reconstrucción tiende a fallar incluso con las credenciales correctas.

2 Me gusta

Exacto, ¡estoy usando una clave válida! (segundo intento ahora mismo, nuevo VPS, IP diferente, todavía falla con el mismo error).

1 me gusta

Recibí el error al actualizar Docker desde el administrador. Me pregunto si el problema es causado por los archivos creados. Este error ocurre siempre de la misma manera y no obtenemos un error cuando cerramos maxmind. Hay un problema entre estas dos estructuras y algo se está afectando mutuamente:

Empiezo a pensar que Maxmind es una pista falsa aquí. El backtrace no apunta a Maxmind en absoluto y está indicando un error que se está produciendo en sprockets. Tendré que investigar más para ver si puedo reproducir esto en un droplet.

3 Me gusta

Pienso lo mismo. Maxmind puede no ser un problema, pero su actividad saca a la luz problemas en algunas áreas.

1 me gusta

¿Estás ejecutando esto en digitalocean? Si es así, ¿puedo saber el número de vCPUs y la RAM que has seleccionado?

No, tengo mi propio servidor y PostgreSQL está en un servidor separado. Hice una nota aquí, puedes revisarla:

¿Cuánta RAM y CPU tiene tu servidor? Estoy intentando reproducir esto y he estado reconstruyendo muchas veces en mi droplet pero no puedo encontrar el error.

25 GB de RAM servidor principal
20 GB de RAM servidor postgresql

8 CPU
4 núcleos de CPU

db_shared_buffers: "4096MB"
UNICORN_WORKERS: 8
UNICORN_SIDEKIQ_MAX_RSS: 1500
## Los plugins van aquí
## ver https://meta.discourse.org/t/19157 para detalles
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

Tuve el problema hoy en una máquina con (creo) 16 GB de RAM (pero otras cosas están en ejecución) y 12 o más hilos (puedo obtener los números exactos mañana). Parece que maxmind es una pista falsa, pero cada vez, deshabilitar maxmind siempre lo soluciona (eso es lo que hice hoy).

Pero ahora tú y yo hemos intentado agregar un rescate en la función maxmind y no lo soluciona.

¿Quizás sea algo que sucede en la compilación previa?

2 Me gusta

Tengo dudas sobre esto: assets:precompile

Siguiendo esta secuencia de eventos y examinando los incidentes que ocurrieron entre ellos, podemos obtener una idea:

Agrupación de activos

Descargando MaxMindDB..
(Quizás el error esté en algún punto intermedio)
assets:precompile

Me acabo de dar cuenta de que descargamos las bases de datos de Maxmind en un hilo secundario mientras ejecutamos assets:precompile al mismo tiempo. Basándome en los rastreos inversos que estoy viendo, tengo la hipótesis de que el hilo secundario que usamos para descargar la base de datos de Maxmind está interfiriendo de alguna manera con assets:precompile.

Primero enviaré la corrección anterior y no profundizaré demasiado en la causa raíz, ya que vamos a sacar la descarga de las bases de datos de Maxmind del proceso de compilación.

5 Me gusta

Esa suena como una gran idea. Intentaré volver a activar maxmind en algunos sitios mañana.

¿Puedo probarlo ahora? Porque cuando la actualización del administrador dio un error, quise hacerlo desde ssh y también obtuve un error allí. Si me dices cómo hacerlo, puedo intentarlo yo mismo.

1 me gusta