Problema de reconstrução: [Não é possível definir dual-stack em combinação com um endpoint personalizado.]

Olá :wave:

Não consigo reconstruir com o seguinte problema.

I, [2024-11-07T08:00:56.758061 #1]  INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)

          raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FAILED

--------------------

Pups::ExecError: cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 3349 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", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}

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.

567dc9e1f9a4e662de6024b8504915d8b6ef1ee2d9b4303af75323ba478679e4

Provavelmente relacionado ao commit: FIX: Use dualstack S3 endpoint for direct uploads (#29611) · discourse/discourse@0568d36 · GitHub

Eu uso armazenamento de objetos S3 para fazer upload para DO Spaces. O problema provavelmente está relacionado a isso.

Obrigado :slight_smile:

1 curtida

Comentei essas linhas, o que faz com que a reconstrução seja executada com sucesso, mas o site fica preso na tela inicial, acho que porque não consegue carregar os ativos. :thinking: Modo de segurança igual…

  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

Alguma ideia? Sei que é um mau momento… :confused:

1 curtida

Olá Don, vamos dar uma olhada. Obrigado por relatar.

1 curtida

Obrigado Natalie :hugs:

Para uma correção rápida, reconstruí com a versão cc01555fce59e116b76c912b4c5195e111a652b2, que está um commit atrás desta FIX: Use dualstack S3 endpoint for direct uploads (#29611) · discourse/discourse@0568d36 · GitHub

2 curtidas

Minha reconstrução com uma configuração do Digital Ocean Spaces S3 começou a falhar com este erro:

, [2024-11-07T19:09:38.615466 #1]  INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets                                                   
rake aborted!                                                                                                                                                                     
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)
          raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/endpoint_provider.rb:34:in `resolve_endpoint'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/endpoints.rb:37:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/endpoint.rb:47:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/param_validator.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'

Mas omitir a configuração para whatever faz com que a compilação falhe assim:


I, [2024-11-07T19:15:31.060936 #1]  INFO -- : cd /var/www/discourse & sudo -E -u discourse bundle exec rake s3:upload_assets                                                   
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars              
I, [2024-11-07T19:15:36.056204 #1]  INFO -- :                                            


Eu encontrei isto:

e isto:

Talvez S3_REGION deva ser limpo se um endpoint for definido aqui?

EDIT: Ops. Achei que tinha pesquisado. Desculpe Falco.

1 curtida

Estranhamente, isso me dá este erro:

Gem::LoadError: não é possível ativar webrick-1.9.0, já ativado webrick-1.8.2 (Gem::LoadError)

que eu tinha acabado de ver em uma instância que estava usando para executar uma importação, que eu “consertou” atualizando.

Acho que simplesmente não posso atualizar este servidor agora. :frowning:

Não tenho certeza, mas talvez valha a pena tentar. Eu já fiz uma reconstrução com sucesso antes de fazer isso.

E logo depois disso, tentei reconstruir selecionando o commit. Na segunda vez, a reconstrução foi bem-sucedida.

1 curtida

@martin geralmente o que fazemos aqui é fornecer uma GlobalSetting para desabilitar o comportamento que permite que pessoas executando clones S3 incompatíveis possam optar por fazê-lo funcionar.

Na minha opinião, o comportamento atual deve permanecer como padrão, mas fornecer opções para aumentar a compatibilidade.

Veja exemplos anteriores em DISCOURSE_S3_HTTP_CONTINUE_TIMEOUT, DISCOURSE_S3_INSTALL_CORS_RULE, etc.

3 curtidas

Ah, desculpe, falha minha, pessoal. Esses clones de S3 sempre me escapam. Na verdade, tive que corrigir esse problema de endpoint personalizado com o Minio ontem. Acho que a correção aqui pode ser simplesmente nunca usar dualstack se DISCOURSE_S3_ENDPOINT foi definido, já que eles são incompatíveis, e todo mundo aqui aparentemente está usando isso.

3 curtidas

Eu mesclei uma correção para isso agora:

4 curtidas

Obrigado pela correção rápida! Estou de volta aos negócios. :tada:

Obrigado pela explicação clara, Rafael!

Isso porque há muita coisa para se lembrar! E os testes de especificação, acho, exigiriam aqueles stub_requests irritantes que eu sei que odeio escrever.

Só para constar, isso me parece certo. E você provavelmente poderia escrever testes para isso que não exigissem stubs para stub_requests.

1 curtida

10 posts foram movidos para um novo tópico: Não é possível fazer backup ou navegar até os backups

Não acho que isso deva ser marcado como fixed.

Essa alteração muito provavelmente causou uma interrupção nos backups em várias instâncias (com outras pessoas presumivelmente sem saber que suas instâncias não estão fazendo backup ainda).

Isso sugere que as especificações não são amplas o suficiente para capturar todos os casos de uso reais e que alterações estão sendo aprovadas quando não deveriam?

4 curtidas

Parece que foi corrigido apenas para sites que têm use_s3 ativado, mas não para aqueles que usam S3 apenas para backups.

Embora seja possível reconstruir novamente, é apenas que os backups do S3 estão quebrados. :crying_cat_face:

3 curtidas

O problema de backup foi corrigido aqui Unable to backup or navigate to backups - #20 by martin

3 curtidas

Este tópico foi fechado automaticamente 3 dias após a última resposta. Novas respostas não são mais permitidas.