Fallo al descargar maxmind db con clave válida y se puede descargar la DB desde el contenedor

La compilación falló por esto. Eliminé la variable de entorno y volví a compilar sin ella. Luego pasé a la depuración dentro del contenedor. donde agregué la clave a discourse.conf, todavía falla.

(Afortunadamente, hice esto antes de decirle al cliente que me había dado una clave no válida).

Agregué un puts a la tarea de rake para imprimir la URL desde la que está intentando descargar la base de datos de esta manera:

    url =
      "https://download.maxmind.com/app/geoip_download?license_key=#{GlobalSetting.maxmind_license_key}&edition_id=#{name}&suffix=tar.gz"

    gz_file =
      FileHelper.download(
        url,
        max_file_size: 100.megabytes,
        tmp_file_name: "#{name}.gz",
        validate_uri: false,
        follow_redirect: false,
      )

    if gz_file.nil?
      puts "no gzfile"
    end
    puts "Got file #{gz_file} for #{url}"
    filename = File.basename(gz_file.path)

Ahora obtengo esto:

root@web-only:/var/www/discourse# rake maxminddb:get
Plugin name is 'discourse-topic-voting', but plugin directory is named 'discourse-voting'
Downloading MaxMindDb's GeoLite2-City...
no gzfile
Got file  for https://download.maxmind.com/app/geoip_download?license_key=VALID_KEY_IS_HERE&edition_id=GeoLite2-City&suffix=tar.gz
rake aborted!
NoMethodError: undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
/var/www/discourse/lib/discourse_ip_info.rb:52:in `mmdb_download'
/var/www/discourse/lib/tasks/maxminddb.rake:9:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `each'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => maxminddb:get
(See full trace by running task with --trace)

Hubo otro tema donde el problema era que el sitio estaba bloqueado por Maxmind, así que lo intenté y descargué con éxito esa URL con wget desde dentro del contenedor en el servidor en cuestión.

Me parece que FileHelper.download no es mucho un Helper después de todo y está devolviendo silenciosamente nil en lugar de un archivo. El archivo es de solo 44 MB, así que no es eso. Cuando reviso las cabeceras completas con wget, no veo una redirección.

¿Alguna idea de qué podría ser?

¿Hay alguna razón para no capturar este error y dejar que una compilación se complete con una clave no válida? ¿Quizás solo imprimir una advertencia?

1 me gusta

¿Funciona mejor con follow_redirect: true?

Según un cambio reciente, MaxMind cambió su URL de descarga, pero puedes conservar la original siempre que permitas la redirección.

2 Me gusta

Me pregunto si hubo una falta de comunicación y en realidad no es el 1 de mayo cuando esto comienza. :thinking:

2 Me gusta

OMG. Sí. No sé por qué no cambié eso y pensé que sabía que no estaba redirigiendo.

4 Me gusta

Genial, lo he fusionado. ¡Por favor, avísanos cómo va!

3 Me gusta

Intentamos volver a poner en uso la clave maxmind de nuestro foro, todavía obtenemos el error original al intentar reconstruir.

1 me gusta

¿Podrías comprobar si usas la última versión de Discourse? Funciona para Jay; no veo ninguna razón por la que no te funcione a ti, especialmente cuando sigue la recomendación de MaxMind. :thinking:

1 me gusta

No estoy seguro de cómo no lo haría al reconstruir la aplicación.

Tienes razón. Nunca se sabe, sin embargo. :smile: ¿Qué versión de hash se muestra? Podemos comprobarlo rápidamente, como mínimo.

Volví a leer el anuncio de MaxMind, pero no veo nada más que cambiar la URL o permitir redirecciones. :thinking:

1 me gusta

¿Estás ejecutando tests-passed o latest-release?

Estamos en tests-passed, al menos que yo sepa.

¿Cuál es la URL o obtén el commit al ver el código fuente?

Fin de los registros de la compilación fallida:

Descargando MaxMindDB...
Comprimiendo Javascript y generando Source Maps
I, [2024-03-26T13:27:38.305597 #1] INFO -- : Terminando procesos asíncronos
I, [2024-03-26T13:27:38.307312 #1]  INFO -- : Enviando INT a 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: 42
I, [2024-03-26T13:27:38.307891 #1]  INFO -- : Enviando TERM a exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (1711459658) Recibiendo SIGTERM, programando apagado...
2024-03-26 13:27:38.307 UTC [42] LOG:  solicitud de apagado rápido recibida
2024-03-26 13:27:38.314 UTC [42] LOG:  abortando transacciones activas
2024-03-26 13:27:38.321 UTC [42] LOG:  el proceso secundario \"logical replication launcher\" (PID 51) salió con código de salida 1
2024-03-26 13:27:38.322 UTC [46] LOG:  apagando
111:M 26 Mar 2024 13:27:38.353 # Solicitud de apagado del usuario...
111:M 26 Mar 2024 13:27:38.353 * Guardando la instantánea RDB final antes de salir.
2024-03-26 13:27:38.415 UTC [42] LOG:  el sistema de bases de datos está apagado
111:M 26 Mar 2024 13:27:39.896 * DB guardado en disco
111:M 26 Mar 2024 13:27:39.896 # Redis está listo para salir, adiós...
FALLIDO
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake themes:update assets:precompile' falló con retorno #&lt;Process::Status: pid 3889 exit 1&gt;
Ubicación del fallo: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falló con los parámetros {\"cd\"=&gt;\"$home\", \"hook\"=&gt;\"assets_precompile\", \"cmd\"=&gt;[\"su discourse -c 'bundle exec rake themes:update assets:precompile'\"]}}
fallo de arranque con código de salida 1
** FALLO AL INICIAR ** por favor desplácese hacia arriba y busque mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7

Commit: <Commits · discourse/discourse · GitHub;

Como nota posterior, no enlacé al sitio donde ocurrió porque uno de los miembros del personal estaba probando un error del kernel en un contenedor separado en el mismo servidor, y accidentalmente bloqueó todo el servidor, por lo que enlazar al sitio no habría ayudado en absoluto.

1 me gusta

¿Todavía sucede @Firepup650?

He estado pensando en reconstruir un poco, así que haré una y veré.

1 me gusta

Confirmo que el problema ya no ocurre. Nuestro foro ahora se reconstruye correctamente.

4 Me gusta

Este tema se cerró automáticamente después de 26 horas. Ya no se permiten nuevas respuestas.