Error durante la actualización ESOCKETTIMEDOUT registry.yarnpkg.com

Intentando actualizar Discourse mediante el procedimiento manual

git pull
./launcher rebuild app
...

./discourse-doctor muestra un error

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 ====================

El mismo problema cuando intenté ejecutar
./launcher rebuild app

Intenté descargar date-fns-2.29.3.tgz en un host Linux y funciona.

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

Discourse alojado en una VM Alpine Linux

Encuentro el mismo problema en un VPS de Ubuntu. No tengo ni idea.

No puedo decir si ese es el problema real o si tienes un problema con la red de Docker.

1 me gusta

Es posible que esto se pueda solucionar añadiendo más tiempo antes de que yarn se rinda. He enviado una solicitud de extracción (pull request):

Puedes hacer este cambio manualmente como lo explica Mario Lurig:

Ver también:

3 Me gusta

Excelente. Citado para permanencia y búsqueda:

Sin embargo, mientras esperaba que se completara el Paso 9 (después de ejecutar ./discourse-setup) y que todo se compilara, fallaba con un error ESOCKETTIMEDOUT relacionado con yarn. El último mensaje que intenta ejecutar es [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.

La Solución

Necesitas instalar un editor; prefiero nano, así que apt-get install nano hace el truco. Luego ve a /var/discourse/templates y ejecuta: nano web.template.yml. A modo de comparación, aquí tienes el archivo que clonaste de github y el área de interés está alrededor de la línea 159. ¿Te resulta familiar? Es el mismo comando mencionado anteriormente antes de que fallara. Necesitamos agregar una nueva sección encima de esta línea para aumentar el tiempo de espera.

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

Guarda este cambio y luego vuelve a ejecutar ./discourse-setup y ¡listo, completado! Definitivamente tomará un tiempo, especialmente el paso de compresión brotli, pero terminará.

3 Me gusta

Tuve el mismo tiempo de espera, pero tuve problemas para implementar la solución sugerida, así que me gustaría añadir algunos detalles.

Primero, tuve algunos problemas para encontrar /var/discourse/templates, porque mi instalación de Discourse está en una ubicación no estándar. Estaba buscando dentro de Docker, lo que por supuesto no tiene sentido.

Segundo, el número de línea 159 ya no es correcto. Supongo que te refieres a esta sección 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 &amp;&amp; yarn cache clean'

Tercero, no estoy muy familiarizado con yaml, pups y yarn o cómo se usan en Discourse, y no quería adivinar. En cambio, probé este cambio en la sección 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 &amp;&amp; yarn install --frozen-lockfile &amp;&amp; yarn cache clean'

Esto funciona para mí. ./launcher rebuild app ahora tarda mucho tiempo (más de 2 horas para mí), pero al menos se completa y el foro vuelve a funcionar.

Finalmente, me gustaría añadir que este problema (para mí) ciertamente no fue por falta de memoria: estoy usando un VPS con 32 GB instalados, de los cuales 24 GB estaban libres cuando ocurrió el problema.

2 Me gusta