Errore nel download di maxmind db con chiave valida, ma scaricabile dall'interno del container

La build è fallita a causa di questo. Ho rimosso la variabile ENV e ricostruito senza di essa. Poi sono passato al debug all’interno del container. dove ho aggiunto la chiave a discourse.conf, ma continua a fallire.

(Fortunatamente l’ho fatto prima di dire al cliente che mi aveva fornito una chiave non valida!)

Ho aggiunto un puts al rake task per stampare l’URL da cui sta cercando di scaricare il database in questo modo:

    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)

Ora ottengo questo:

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)

C’era un altro topic in cui il problema era che il sito era bloccato da Maxmind, quindi ho provato, e sono riuscito a scaricare quell’URL con wget dal container sul server in questione.

Mi sembra che FileHelper.download non sia molto un Helper dopotutto e restituisca silenziosamente nil invece di un file. Il file è solo 44MB, quindi non è quello. Quando controllo gli header completi con wget non vedo un reindirizzamento.

Qualche idea su cosa potrebbe essere?

C’è un motivo per non catturare questo errore e lasciare che una build venga completata con una chiave non valida? Magari stampare solo un avviso?

1 Mi Piace

Funziona meglio con follow_redirect: true?

Come da una recente modifica, MaxMind ha cambiato il suo URL per il download, ma puoi mantenere quello originale finché consenti il reindirizzamento.

2 Mi Piace

Mi chiedo se ci sia stato un malinteso e non sia davvero il 1° maggio che questo inizia. :thinking:

2 Mi Piace

OMG. Sì. Non so perché non ho semplicemente cambiato quello e pensato che sapessi che non stava reindirizzando.

4 Mi Piace

Fantastico, l’ho unito, facci sapere come va per favore!

3 Mi Piace

Abbiamo provato a rimettere in uso la chiave maxmind del nostro forum, otteniamo ancora l’errore originale quando proviamo a ricostruire.

1 Mi Piace

Potresti verificare se utilizzi l’ultima versione di Discourse? Funziona per Jay; non vedo alcun motivo per cui non dovrebbe funzionare per te, specialmente quando segue la raccomandazione di MaxMind. :thinking:

1 Mi Piace

Non sono sicuro di come non dovrebbe esserlo quando si ricostruisce l’app

Hai ragione. Non si sa mai, però. :smile: Qual è la versione hash visualizzata? Possiamo controllare rapidamente, quantomeno.

Ho riletto l’annuncio di MaxMind, ma non vedo nient’altro oltre alla modifica dell’URL o all’autorizzazione dei reindirizzamenti. :thinking:

1 Mi Piace

Stai eseguendo tests-passed o latest-release?

Siamo su tests-passed, almeno per quanto ne so.

Qual è l’URL o ottieni il commit quando visualizzi il sorgente.

Fine dei log dalla build fallita:

Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps
I, [2024-03-26T13:27:38.305597 #1] INFO -- : Terminating async processes
I, [2024-03-26T13:27:38.307312 #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: 42
I, [2024-03-26T13:27:38.307891 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (1711459658) Received SIGTERM scheduling shutdown...
2024-03-26 13:27:38.307 UTC [42] LOG:  received fast shutdown request
2024-03-26 13:27:38.314 UTC [42] LOG:  aborting any active transactions
2024-03-26 13:27:38.321 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2024-03-26 13:27:38.322 UTC [46] LOG:  shutting down
111:M 26 Mar 2024 13:27:38.353 # User requested shutdown...
111:M 26 Mar 2024 13:27:38.353 * Saving the final RDB snapshot before exiting.
2024-03-26 13:27:38.415 UTC [42] LOG:  database system is shut down
111:M 26 Mar 2024 13:27:39.896 * DB saved on disk
111:M 26 Mar 2024 13:27:39.896 # Redis is now ready to exit, bye bye...
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #&lt;Process::Status: pid 3889 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c '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.
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7

Commit: <Commits · discourse/discourse · GitHub;

Come nota successiva, non ho collegato il sito su cui si è verificato questo problema, perché uno dei membri dello staff stava testando un bug del kernel in un container separato sullo stesso server e ha accidentalmente bloccato l’intero server, quindi collegare il sito non avrebbe aiutato affatto.

1 Mi Piace

Succede ancora @Firepup650?

Avevo intenzione di ricostruire un po’, quindi ne eseguirò uno e vedrò.

1 Mi Piace

Confermo, il problema non si verifica più. Il nostro forum ora viene ricompilato correttamente.

4 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 26 ore. Non sono più consentite nuove risposte.