Erro durante a atualização ESOCKETTIMEDOUT registry.yarnpkg.com

Tentando atualizar o Discourse através do procedimento manual

git pull
./launcher rebuild app
...

./discourse-doctor mostra um erro

I, [2023-06-16T11:39:43.530890 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
error An unexpected error occurred: "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz: ESOCKETTIMEDOUT".
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean' failed with return #<Process::Status: pid 281 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'"]}
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.
f485460571ab9e30e0d6917b05c9a8fe1772df13d8cae9fe67108961fae71039
==================== END REBUILD LOG ====================

O mesmo problema quando tentei executar
./launcher rebuild app

Tentei baixar date-fns-2.29.3.tgz em um host Linux, e funcionou.

wget https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz
Connecting to registry.yarnpkg.com (104.16.26.35:443)
salvando em 'date-fns-2.29.3.tgz'
date-fns-2.29.3.tgz  100% |*************************************************************************************************************|  712k  0:00:00 ETA
'date-fns-2.29.3.tgz' salvo

Discourse hospedado em VM Alpine Linux

Encontro o mesmo problema no VPS do Ubuntu. Nenhuma pista.

Não consigo dizer se esse é o problema real ou se você tem um problema com a rede do docker.

1 curtida

É possível que isso possa ser corrigido adicionando mais tempo antes que o yarn desista. Enviei um pull request:

Você pode fazer essa alteração manualmente, como explicado por Mario Lurig:

Veja também:

3 curtidas

Excelente. Citado para permanência e pesquisa:

No entanto, quando eu estava esperando a Etapa 9 ser concluída (após executar ./discourse-setup) e tudo ser compilado, ele falhava com um erro ESOCKETTIMEDOUT relacionado ao yarn. A última mensagem que tenta executar é [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.

A Correção

Você precisa instalar um editor; eu prefiro o nano, então apt-get install nano resolve. Em seguida, vá para /var/discourse/templates e execute: nano web.template.yml. Para comparação, aqui está o arquivo que você clonou do github e a área de interesse está em torno da linha 159. Parece familiar? É o mesmo comando observado acima antes de falhar. Precisamos adicionar uma nova seção acima desta linha para aumentar o tempo limite.

  • exec: cd: $home cmd: - “su discourse -c ‘yarn config set network-timeout 600000 -g’”

Salve essa alteração, em seguida, execute ./discourse-setup novamente e pronto, conclusão! Definitivamente levará algum tempo, especialmente a etapa de compressão brotli, mas terminará.

3 curtidas

Tive o mesmo timeout, mas tive problemas para implementar a solução sugerida, então gostaria de adicionar alguns detalhes.

Primeiro, tive alguma dificuldade em encontrar /var/discourse/templates, porque a minha instalação do Discourse está em um local não padrão. Eu estava procurando dentro do Docker, o que, claro, não faz sentido.

Segundo, o número da linha 159 já não está correto. Presumo que você esteja se referindo a esta seção de template.yml:

- exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'

Terceiro, não estou muito familiarizado com yaml, pups e yarn ou como eles são usados no Discourse, e não queria adivinhar. Em vez disso, tentei esta alteração na seção original:

  - exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'

Isso funciona para mim. ./launcher rebuild app agora leva muito tempo (mais de 2 horas para mim), mas pelo menos é executado até a conclusão, e o fórum funciona novamente.

Finalmente, gostaria de acrescentar que este problema (para mim) certamente não foi falta de memória: estou usando um VPS com 32GB instalados, dos quais 24GB estavam livres quando o problema ocorreu.

2 curtidas