Falha ao baixar o banco de dados maxmind com chave válida e é possível baixar o banco de dados de dentro do contêiner

A compilação falhou por causa disso. Removi a variável ENV e reconstruí sem ela. Em seguida, fui para a depuração dentro do contêiner. Onde adicionei a chave a discourse.conf, ainda está falhando.

(Felizmente, fiz isso antes de dizer ao cliente que ele me deu uma chave inválida!)

Adicionei um puts à tarefa rake para imprimir a URL que está tentando baixar o banco de dados assim:

    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)

Agora recebo isto:

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)

Houve outro tópico onde o problema era que o site estava bloqueado pela Maxmind, então tentei, e baixei com sucesso essa URL com wget de dentro do contêiner no servidor em questão.

Parece-me que FileHelper.download não é muito um Helper, afinal, e está silenciosamente retornando nil em vez de um arquivo. O arquivo tem apenas 44MB, então não é isso. Quando verifico os cabeçalhos completos com wget, não vejo um redirecionamento.

Alguma ideia do que pode ser?

Existe alguma razão para não capturar este erro e deixar uma compilação ser concluída com uma chave inválida? Talvez apenas imprimir um aviso?

1 curtida

Funciona melhor com follow_redirect: true?

Conforme uma alteração recente, a MaxMind mudou sua URL para download, mas você pode manter a original desde que permita o redirecionamento.

2 curtidas

Será que houve uma falha de comunicação e o início não é realmente 1º de maio. :thinking:

2 curtidas

OMG. Sim. Não sei por que não mudei isso e pensei que sabia que não estava redirecionando.

4 curtidas

Legal, mesclado, por favor, nos informe como ficou!

3 curtidas

Tentamos recolocar a chave maxmind do nosso fórum em uso, ainda recebemos o erro original ao tentar reconstruir.

1 curtida

Você poderia verificar se você usa a versão mais recente do Discourse? Funciona para o Jay; não vejo nenhuma razão para não funcionar para você, especialmente quando segue a recomendação da MaxMind. :thinking:

1 curtida

Não tenho certeza de como não seria ao reconstruir o aplicativo

Você tem razão. Nunca se sabe, porém. :smile: Qual é a versão do hash exibida? Podemos verificar rapidamente, no mínimo.

Relendo o anúncio da MaxMind, mas não consigo ver nada além de alterar a URL ou permitir redirecionamentos. :thinking:

1 curtida

Você está executando tests-passed ou latest-release?

Estamos em tests-passed, pelo menos que eu saiba.

Qual é a URL ou obtenha o commit ao visualizar o código-fonte.

Fim dos logs da compilação com falha:

Baixando MaxMindDB...
Comprimindo Javascript e Gerando Source Maps
I, [2024-03-26T13:27:38.305597 #1] INFO -- : Terminando processos assíncronos
I, [2024-03-26T13:27:38.307312 #1]  INFO -- : Enviando INT para 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 para exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (1711459658) Recebendo SIGTERM agendando desligamento...
2024-03-26 13:27:38.307 UTC [42] LOG:  solicitação de desligamento rápido recebida
2024-03-26 13:27:38.314 UTC [42] LOG:  abortando todas as transações ativas
2024-03-26 13:27:38.321 UTC [42] LOG:  worker principal \"logical replication launcher\" (PID 51) saiu com código de saída 1
2024-03-26 13:27:38.322 UTC [46] LOG:  desligando
111:M 26 Mar 2024 13:27:38.353 # Solicitação de desligamento do usuário...
111:M 26 Mar 2024 13:27:38.353 * Salvando o snapshot RDB final antes de sair.
2024-03-26 13:27:38.415 UTC [42] LOG:  sistema de banco de dados está desligado
111:M 26 Mar 2024 13:27:39.896 * DB salvo em disco
111:M 26 Mar 2024 13:27:39.896 # Redis está pronto para sair, tchau tchau...
FALHOU
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake themes:update assets:precompile' falhou com retorno #&lt;Process::Status: pid 3889 exit 1&gt;
Localização da falha: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falhou com os parâmetros {\"cd\"=&gt;\"$home\", \"hook\"=&gt;\"assets_precompile\", \"cmd\"=&gt;[\"su discourse -c 'bundle exec rake themes:update assets:precompile'\"]}
bootstrap falhou com código de saída 1
** FALHA AO INICIAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7

Commit: <Commits · discourse/discourse · GitHub;

Como uma nota posterior, eu não linkei para o site onde isso ocorreu, porque um dos membros da equipe estava testando um bug no kernel em um container separado no mesmo servidor, e travou todo o servidor por engano, então linkar para o site não teria ajudado em nada.

1 curtida

Ainda acontece, @Firepup650?

Eu estava pensando em reconstruir há um tempo, então vou rodar uma e ver.

1 curtida

Posso confirmar, o problema não ocorre mais. Nosso fórum agora é reconstruído sem problemas.

4 curtidas

Este tópico foi automaticamente fechado após 26 horas. Novas respostas não são mais permitidas.