Не удалось обновить экземпляр Discourse до версии от 15 февраля 2022 года

Обновление с Commits · discourse/discourse · GitHub до последней версии привело к падению сайта. Ниже приведены значимые фрагменты логов:

I, [2022-02-15T05:27:48.995821 #1]  INFO -- : Замена (?-mix:^host.*all.*all.*127.*$) на host all all 0.0.0.0/0 md5 в /etc/postgresql/13/main/pg_hba.conf
I, [2022-02-15T05:27:48.997476 #1]  INFO -- : Замена (?-mix:^host.*all.*all.*::1\/128.*$) на host all all ::/0 md5 в /etc/postgresql/13/main/pg_hba.conf
I, [2022-02-15T05:27:48.998553 #1]  INFO -- : > 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
I, [2022-02-15T05:27:49.003918 #1]  INFO -- : > sleep 5
2022-02-15 05:27:49.151 UTC [41] LOG:  запуск PostgreSQL 13.5 (Debian 13.5-1.pgdg110+1) на x86_64-pc-linux-gnu, скомпилировано gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-бит
2022-02-15 05:27:49.152 UTC [41] LOG:  прослушивание IPv4-адреса "0.0.0.0", порт 5432
2022-02-15 05:27:49.152 UTC [41] LOG:  прослушивание IPv6-адреса "::", порт 5432
2022-02-15 05:27:49.162 UTC [41] LOG:  прослушивание Unix-сокета "/var/run/postgresql/.s.PGSQL.5432"
2022-02-15 05:27:49.184 UTC [44] LOG:  база данных была остановлена в 2022-02-15 00:12:32 UTC
2022-02-15 05:27:49.209 UTC [41] LOG:  система баз данных готова принимать подключения
I, [2022-02-15T05:27:54.013563 #1]  INFO -- : 
I, [2022-02-15T05:27:54.015179 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2022-02-15 05:27:54.259 UTC [54] postgres@postgres ERROR:  база данных "discourse" уже существует
2022-02-15 05:27:54.259 UTC [54] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: ошибка: создание базы данных не удалось: ERROR:  база данных "discourse" уже существует
I, [2022-02-15T05:27:54.270626 #1]  INFO -- : 
I, [2022-02-15T05:27:54.272627 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2022-02-15 05:27:54.425 UTC [58] postgres@discourse ERROR:  роль "discourse" уже существует
2022-02-15 05:27:54.425 UTC [58] postgres@discourse STATEMENT:  create user discourse;
ERROR:  роль "discourse" уже существует
I, [2022-02-15T05:27:54.431376 #1]  INFO -- : 
I, [2022-02-15T05:27:54.431915 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2022-02-15T05:27:54.533010 #1]  INFO -- : GRANT
I, [2022-02-15T05:27:55.303411 #1]  INFO -- : > echo redis установлен
I, [2022-02-15T05:27:55.310858 #1]  INFO -- : redis установлен

I, [2022-02-15T05:27:55.312551 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2022-02-15T05:27:55.323276 #1]  INFO -- : logfile ""

I, [2022-02-15T05:27:55.324362 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2022-02-15T05:27:55.329352 #1]  INFO -- : > sleep 10
102:C 15 Feb 2022 05:27:55.343 # oO0OoO0OoO0Oo Redis запускается oO0OoO0OoO0Oo
102:C 15 Feb 2022 05:27:55.343 # Версия Redis=6.2.6, биты=64, коммит=00000000, изменено=0, pid=102, только что запущен
102:C 15 Feb 2022 05:27:55.343 # Конфигурация загружена
102:M 15 Feb 2022 05:27:55.346 * монохронные часы: POSIX clock_gettime
102:M 15 Feb 2022 05:27:55.349 * Режим работы=standalone, порт=6379.
102:M 15 Feb 2022 05:27:55.350 # ПРЕДУПРЕЖДЕНИЕ: Настройка TCP backlog 511 не может быть применена, так как /proc/sys/net/core/somaxconn установлен в меньшее значение 128.
102:M 15 Feb 2022 05:27:55.350 # Сервер инициализирован
102:M 15 Feb 2022 05:27:55.350 # ПРЕДУПРЕЖДЕНИЕ: overcommit_memory установлен в 0! Фоновое сохранение может завершиться ошибкой при нехватке памяти. Чтобы исправить эту проблему, добавьте 'vm.overcommit_memory = 1' в /etc/sysctl.conf, затем перезагрузитесь или выполните команду 'sysctl vm.overcommit_memory=1' для применения изменений.
102:M 15 Feb 2022 05:27:55.352 * Загрузка RDB, созданного версией 6.2.6
102:M 15 Feb 2022 05:27:55.352 * Возраст RDB 18923 секунд
102:M 15 Feb 2022 05:27:55.352 * Использование памяти RDB при создании 133.51 Мб
102:M 15 Feb 2022 05:27:55.912 # Загрузка RDB завершена, ключей загружено: 7294, ключей истекло: 127.
102:M 15 Feb 2022 05:27:55.912 * База данных загружена с диска за 0.560 секунд
102:M 15 Feb 2022 05:27:55.912 * Готов принимать подключения
I, [2022-02-15T05:28:05.336548 #1]  INFO -- : 
I, [2022-02-15T05:28:05.337696 #1]  INFO -- : > thpoff echo "thpoff установлен!"
I, [2022-02-15T05:28:05.349534 #1]  INFO -- : thpoff установлен!

I, [2022-02-15T05:28:05.349959 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Прерывание! Почта не настроена!"; exit 1; end'
I, [2022-02-15T05:28:05.496038 #1]  INFO -- : 
I, [2022-02-15T05:28:05.496604 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Прерывание! Домен не настроен!"; exit 1; end'
I, [2022-02-15T05:28:05.617847 #1]  INFO -- : 
I, [2022-02-15T05:28:05.618268 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Прерывание! CDN должен указывать протокол. После исправления следует пересобрать все посты, чтобы исправить их все."; exit 1; end'
I, [2022-02-15T05:28:05.754370 #1]  INFO -- : 
I, [2022-02-15T05:28:05.755864 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2022-02-15T05:28:05.763371 #1]  INFO -- : 
I, [2022-02-15T05:28:05.773372 #1]  INFO -- : Файл > /etc/cron.d/anacron chmod:   chown: 
I, [2022-02-15T05:28:05.785161 #1]  INFO -- : Файл > /etc/runit/1.d/copy-env chmod: +x  chown: 
I, [2022-02-15T05:28:05.801026 #1]  INFO -- : Файл > /etc/service/unicorn/run chmod: +x  chown: 
I, [2022-02-15T05:28:05.816469 #1]  INFO -- : Файл > /etc/service/nginx/run chmod: +x  chown: 
I, [2022-02-15T05:28:05.828667 #1]  INFO -- : Файл > /etc/runit/3.d/01-nginx chmod: +x  chown: 
I, [2022-02-15T05:28:05.841176 #1]  INFO -- : Файл > /etc/runit/3.d/02-unicorn chmod: +x  chown: 
I, [2022-02-15T05:28:05.841464 #1]  INFO -- : Замена # postgres на sv start postgres || exit 1 в /etc/service/unicorn/run
I, [2022-02-15T05:28:05.842241 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2022-02-15T05:28:05.847862 #1]  INFO -- : > cd /var/www/discourse && git reset --hard
130:C 15 Feb 2022 05:28:05.853 # oO0OoO0OoO0Oo Redis запускается oO0OoO0OoO0Oo
130:C 15 Feb 2022 05:28:05.854 # Версия Redis=6.2.6, биты=64, коммит=00000000, изменено=0, pid=130, только что запущен
130:C 15 Feb 2022 05:28:05.855 # Конфигурация загружена
130:M 15 Feb 2022 05:28:05.857 * монохронные часы: POSIX clock_gettime
130:M 15 Feb 2022 05:28:05.858 # Предупреждение: Не удалось создать сокет для прослушивания TCP *:6379: bind: Адрес уже используется
130:M 15 Feb 2022 05:28:05.859 # Не удалось прослушивать порт 6379 (TCP), прерывание.
Обновление файлов: 100% (30947/30947), завершено.
I, [2022-02-15T05:28:13.624544 #1]  INFO -- : HEAD теперь на e1367cde I18N: Улучшение текста сообщений об ошибках для заблокированных слов (#15741)
I, [2022-02-15T05:29:36.205328 #1]  INFO -- : > cd /var/www/discourse && [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache clean'
warning Поле разрешения "lodash@4.17.21" несовместимо с запрошенной версией "lodash@4.17.15"
warning " > @mixer/parallel-prettier@2.0.1" имеет неудовлетворенную зависимую зависимость "prettier@^2.0.0".
I, [2022-02-15T05:33:01.692668 #1]  INFO -- : yarn install v1.22.17
[1/5] Проверка package.json...
[2/5] Разрешение пакетов...
[3/5] Загрузка пакетов...
[4/5] Связывание зависимостей...
[5/5] Сборка свежих пакетов...
$ yarn --cwd app/assets/javascripts/discourse
yarn install v1.22.17
[1/4] Разрешение пакетов...
[2/4] Загрузка пакетов...
[3/4] Связывание зависимостей...
[4/4] Сборка свежих пакетов...
success Файл блокировки сохранен.
Готово за 133.99с.
Готово за 195.02с.
yarn cache v1.22.17
success Кэш очищен.
Готово за 9.35с.

I, [2022-02-15T05:33:01.697905 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2022-02-15T05:33:12.324517 #1]  INFO -- : discourse-github уже на последней совместимой версии
discourse-solved уже на последней совместимой версии
discourse-chat уже на последней совместимой версии

I, [2022-02-15T05:33:12.325695 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
102:M 15 Feb 2022 05:33:37.418 * 100 изменений за 300 секунд. Сохранение...
102:M 15 Feb 2022 05:33:37.423 * Фоновое сохранение запущено процессом 1143
1143:C 15 Feb 2022 05:33:38.349 * База данных сохранена на диск
1143:C 15 Feb 2022 05:33:38.352 * RDB: 2 МБ памяти использовано при копировании при записи
102:M 15 Feb 2022 05:33:38.429 * Фоновое сохранение завершено успешно
I, [2022-02-15T05:33:38.994811 #1]  INFO -- : gem install sawyer -v 0.8.2 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Успешно установлен sawyer-0.8.2
Установлен 1 gem
gem install octokit -v 4.21.0 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Успешно установлен octokit-4.21.0
Установлен 1 gem
== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: миграция ========
== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: мигрировано (0.0099с) 

== 20220214233625 AddBounceErrorCodeToEmailLog: миграция =====================
-- add_column(:email_logs, :bounce_error_code, :string, {:null=>true})
   -> 0.0103с
== 20220214233625 AddBounceErrorCodeToEmailLog: мигрировано (0.0121с) ============


I, [2022-02-15T05:33:38.996639 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
- Сборка
- Сборка
- сборка... 
102:M 15 Feb 2022 05:38:39.069 * 100 изменений за 300 секунд. Сохранение...
102:M 15 Feb 2022 05:38:39.080 * Фоновое сохранение запущено процессом 1213
1213:C 15 Feb 2022 05:38:39.863 * База данных сохранена на диск
1213:C 15 Feb 2022 05:38:39.867 * RDB: 2 МБ памяти использовано при копировании при записи
102:M 15 Feb 2022 05:38:39.883 * Фоновое сохранение завершено успешно
[WARN] (broccoli-terser-sourcemap) Минификация "assets/discourse.js" заняла: 35001мс (более 20 000мс)
Убит
error Команда завершилась с ошибкой, код возврата 137.
I, [2022-02-15T05:52:50.058283 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 не протестирован с Ember CLI на вашей платформе. Мы рекомендуем использовать последнюю версию «Active LTS» Node.js. Подробнее см. https://git.io/v7S5n.
DEPRECATION: Интеграция jQuery в Ember устарела и будет удалена в Ember 4.0. Вы можете отказаться от использования jQuery или установить плагин `@ember/jquery` для обеспечения интеграции jQuery. Пожалуйста, ознакомьтесь с руководством по устареванию для получения дополнительных деталей: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Окружение: production
Для получения информации о команде посетите https://yarnpkg.com/en/docs/cli/run.

I, [2022-02-15T05:52:50.072549 #1]  INFO -- : Прерывание асинхронных процессов
I, [2022-02-15T05:52:50.072816 #1]  INFO -- : Отправка INT для 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: 41
I, [2022-02-15T05:52:50.073275 #1]  INFO -- : Отправка TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 102
102:signal-handler (1644904370) Получен SIGTERM, планирование завершения...
2022-02-15 05:52:50.074 UTC [41] LOG:  получен запрос быстрого завершения
2022-02-15 05:52:50.090 UTC [41] LOG:  отмена любых активных транзакций
2022-02-15 05:52:50.096 UTC [41] LOG:  фоновый рабочий "logical replication launcher" (PID 50) завершился с кодом выхода 1
2022-02-15 05:52:50.102 UTC [45] LOG:  завершение работы
102:M 15 Feb 2022 05:52:50.118 # Пользователь запросил завершение...
102:M 15 Feb 2022 05:52:50.120 * Сохранение финального снапшота RDB перед выходом.
2022-02-15 05:52:50.248 UTC [41] LOG:  система баз данных остановлена
102:M 15 Feb 2022 05:52:51.075 * База данных сохранена на диск
102:M 15 Feb 2022 05:52:51.076 # Redis теперь готов к выходу, пока...


ОШИБКА
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' завершилась с ошибкой, код возврата #<Process::Status: pid 1144 exit 137>
Место возникновения ошибки: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec завершилась с ошибкой с параметрами {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
1716fd9590e21cdfdaccea0ac6faabd133a6423e1a24ef3b3b5be0e68ce422c9
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть больше одной.
./discourse-doctor может помочь в диагностике проблемы.

Сейчас запускаю discourse-doctor и собираю более подробные логи.

Это скрипт обновления, который я создал и успешно использую уже более года:

https://github.com/balupton/dotfiles/blob/master/commands/discourse-upgrader

Если прокрутить страницу вверх, над сообщением ‘FAILED’ должно быть более конкретное описание ошибки.

Похоже, что проблема связана с темой или компонентом. Возможно, стоит выполнить ./launcher restart app, чтобы вернуться к версии до пересборки, и затем с помощью обычного интерфейса отключить проблемный элемент перед повторной попыткой обновления. Помогла ли прокрутка вверх найти причину?

Единственным значимым сообщением из brew doctor были следующие:

I, [2022-02-15T06:14:34.823778 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building... 
Killed
error Command failed with exit code 137.
I, [2022-02-15T06:25:24.689000 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

I, [2022-02-15T06:25:24.701625 #1]  INFO -- : Terminating async processes
I, [2022-02-15T06:25:24.702927 #1]  INFO -- : Sending INT to 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, [2022-02-15T06:25:24.703765 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103
103:signal-handler (1644906324) Received SIGTERM scheduling shutdown...
2022-02-15 06:25:24.710 UTC [42] LOG:  received fast shutdown request
2022-02-15 06:25:24.741 UTC [42] LOG:  aborting any active transactions
103:M 15 Feb 2022 06:25:24.777 # User requested shutdown...
103:M 15 Feb 2022 06:25:24.777 * Saving the final RDB snapshot before exiting.
2022-02-15 06:25:24.796 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2022-02-15 06:25:24.797 UTC [46] LOG:  shutting down
2022-02-15 06:25:25.023 UTC [42] LOG:  database system is shut down
103:M 15 Feb 2022 06:25:26.383 * DB saved on disk
103:M 15 Feb 2022 06:25:26.385 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1146 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
a1a2ad7dab631a87852f269d0de01bee80aea384be8a94ba4eb555f1fa5d9094
** 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.
==================== END REBUILD LOG ====================
Failed to rebuild app.

Checking your domain name . . .

Connection to discuss.bevry.me succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . . 
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start app
Error response from daemon: driver failed programming external connectivity on endpoint app (924d10c5f09f04b43e96bd6d1a4a13945cd86ebbb12821a4943914538821b856): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use
Error: failed to start containers: app
Failed to restart the container.

Я обновил исходное сообщение, добавив больше части оригинальных логов.

Повторно запускаю discourse-doctor, так как предыдущий запуск не удался из-за отсутствия wget. Опубликую полный лог после завершения.

Я могу это подтвердить: я пробовал на 3 разных экземплярах, и сборка завершается с ошибкой после достижения следующего состояния.

I, [2022-02-15T07:09:36.714521 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
I, [2022-02-15T07:09:46.598212 #1]  INFO -- :
I, [2022-02-15T07:09:46.599983 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building...
Killed
error Command failed with exit code 137.
I, [2022-02-15T07:30:11.622116 #1]  INFO -- : Checking 'Easy Footer' for 'default'... up to date
Checking 'Discourse Loading Slider' for 'default'... up to date
Checking 'discourse-search-banner' for 'sandbox'... up to date
Checking 'discourse-category-sidebars' for 'sandbox'... up to date
Checking 'Hide Users Column' for 'sandbox'... up to date
Checking 'discourse-sidebar-nav' for 'sandbox'... up to date
Checking 'Dracula Theme' for 'sandbox'... up to date
Checking 'discourse-buttons' for 'tekduke'... yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1034 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
49ed46d025f5fe0a3de022b073b507cc3d94f74f96a60fe2d55042d413def454
** 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.

Похоже, это проблема, связанная с Ember CLI.

Привет, @balupton, не мог бы ты попробовать изменить EMBER_CLI_PROD_ASSETS: 0 и снова выполнить сборку? После этого изменения у меня как минимум одна успешная сборка прошла.

Похоже, это единственные релевантные логи, указывающие на наличие проблем:

I, [2022-02-15T07:15:48.531001 #1]  INFO -- : > cd /var/www/discourse && [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache clean'
warning Resolution field "lodash@4.17.21" is incompatible with requested version "lodash@4.17.15"
warning " > @mixer/parallel-prettier@2.0.1" has unmet peer dependency "prettier@^2.0.0".
I, [2022-02-15T07:19:45.453691 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building... 
Killed
error Command failed with exit code 137.
I, [2022-02-15T07:31:39.549100 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1145 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
a262c461f2ae24390cb1397df309c44738cdc2688483d5fb7d52a3fde3155409
** 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.

Попробую, как это применить?

Неважно, нашёл:

Попробую сейчас.

Смотрю в журнал изменений:

Интересно, связано ли это с этим:

Один из логов был следующим:

103:M 15 Feb 2022 06:54:18.720 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

Недостаточно памяти.

Убедитесь, что у вас достаточно (виртуальной) памяти. В наши дни 1 ГБ памяти и 2 ГБ подкачки, вероятно, слишком мало для пересборки.

Да, всё сработало.

vim /var/discourse/containers/app.yml
env:
  # ...
  ## Обходное решение для: https://meta.discourse.org/t/failed-to-upgrade-discourse-instance-to-feb-15-2022/218204/7?u=balupton
  EMBER_CLI_PROD_ASSETS: 0

Теперь, когда Discourse успешно запущен, команда top показывает:

KiB Mem : **2041324** total, **287808** free, **1033300** used, **720216** buff/cache
KiB Swap: **0** total, **0** free, **0** used. **581308** avail Mem

Это сервер VC1S от Scaleway:

https://serverscope.io/providers/scaleway/plans/vc1s

Поможет ли также выполнить рекомендацию из:

103:M 15 Feb 2022 06:54:18.720 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

?

У VPS 4 ГБ ОЗУ и 2 ГБ подкачки.

Вам нужно добавить немного swap-памяти. Похоже, у вас достаточно места на диске, поэтому можно добавить 2 ГБ или даже 3 ГБ для надёжности.

Стандартная настройка Discourse, как я понимаю, уже должна была настроить swap для вас. Возможно, стоит посмотреть создать swap-файл для вашего Linux-сервера.

И при этом вы видите ошибку нехватки памяти — это тревожно. Пожалуйста, приведите вывод команды free.

Я заметил, что в обеих моих установках (обе имеют всего 1 ГБ ОЗУ и 2 ГБ подкачки) я когда-то последовал этой рекомендации и установил vm.overcommit_memory=1 в /etc/sysctl.conf. (Это не означает, что это решит текущую проблему.)

Вскоре мы уберем возможность отключать ресурсы Ember CLI, поэтому, пожалуйста, как можно скорее выясните проблему с вашей настройкой. Иначе в будущем обновлении всё снова сломается.

Вам потребуется минимум 1 ГБ ОЗУ + 2 ГБ подкачки (согласно нашему стандартному скрипту установки).

Это действительно тревожно — дайте знать, что вы видите в выводе free, @itsbhanusharma.

Привет, @david
Вот информация о свободной памяти:

root@discourse:~# free
              total        used        free      shared  buff/cache   available
Mem:        3932016     3747708       87928       12812       96380        9960
Swap:       2097148     1095852     1001296

У вас на сервере запущено что-то ещё? Цифры в графе «использовано» кажутся довольно высокими для стандартной установки Discourse :thinking:

available 9960
Это немного :scream:

Сколько единорогов у вас работает?

Это установка для многосайтового обсуждения. Есть несколько дополнительных контейнеров (например, почтовый получатель и монитор времени работы), но ничего необычного.

UNICORN_WORKERS: 4

Как выглядит free после перезагрузки?