Olá @david,
O uso de memória diminui assim que a tarefa assets:build é concluída?
Não. Investiguei mais a fundo e há algo estranho.
Antes de executar o precompiling:build, esta é a lista de plugins:
/var/www/discourse$ ls plugins/
automation discourse-akismet discourse-data-explorer discourse-hcaptcha discourse-microsoft-auth discourse-post-voting discourse-saved-searches discourse-user-notes styleguide
chat discourse-apple-auth discourse-details discourse-lazy-videos discourse-narrative-bot discourse-presence discourse-solved discourse-zendesk-plugin
checklist discourse-assign discourse-docs discourse-local-dates discourse-oauth2-basic discourse-prometheus discourse-subscriptions footnote
discourse-adplugin discourse-cakeday discourse-gamification discourse-login-with-amazon discourse-openid-connect discourse-reactions discourse-templates msgraph-poll-discourse-plugin
discourse-affiliate discourse-calendar discourse-github discourse-lti discourse-patreon discourse-rewind discourse-topic-trade-buttons poll
discourse-ai discourse-chat-integration discourse-graphviz discourse-math discourse-policy discourse-rss-polling discourse-topic-voting spoiler-alert
Percebi o seguinte comportamento após depurar o código.
/var/www/discourse$ script/rails runner "AssetProcessor.ember_version"
O nome do plugin é 'msgraph-polling', mas o diretório do plugin se chama 'msgraph-poll-discourse-plugin'
# trava aqui para sempre
O AssetProcessor.ember_version corresponde à linha discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub
Então, fiz algumas modificações neste arquivo (em anexo), basicamente para imprimir onde ele trava durante o processamento e para remover o AssetProcessor.ember_version em discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub, colocando apenas 5 para continuar a geração do hash hexadecimal.
Em seguida, reduzi o paralelismo para 1 para facilitar as coisas em discourse/lib/plugin/js_manager.rb at latest · discourse/discourse · GitHub (parallel_count = [Etc.nprocessors, 1].min).
Após isso, executei bundle exec rake assets:precompile:build, resultando no seguinte:
/var/www/discourse$ bundle exec rake assets:precompile:build
O nome do plugin é 'msgraph-polling', mas o diretório do plugin se chama 'msgraph-poll-discourse-plugin'
[assemble_ember_build] Reutilizando a build principal do Ember existente. Tudo pronto.
O nome do plugin é 'msgraph-polling', mas o diretório do plugin se chama 'msgraph-poll-discourse-plugin'
[Plugin::JsManager] Compilando 49 plugins...
Compilando automation...
final de files.sort
final de files.sort
hex_digest 103dc9ebebb80a7065cb8dd41fb3356b30f151f7
########### recursivo
# trava aqui para sempre, consumindo toda a memória
Suspeito que isso possa estar relacionado ao valor de ulimit (que configuramos como unlimited em vez de algo como ulimit -n 1048576;), dado que você está abrindo um grande número de arquivos e armazenando seu conteúdo na memória (por meio de chamadas recursivas).
Avise-me se isso lhe soa familiar ou se você tem alguma outra pista sobre qual pode ser o problema.
Abraços,
Ismael
js_manager.rb.txt (7.7 KB)