Сбой обновления до версии 2.7.0.beta2

Привет, я только что получил письмо от Discourse с предложением обновиться с версии 2.7.0.beta1 до 2.7.0.beta2. Я перешёл на страницу администратора и нажал кнопку обновления, но что-то пошло не так. В результате теперь невозможно получить доступ к моему экземпляру Discourse (ошибка 500).

Ниже привожу конец лога. Полный лог был слишком длинным, поэтому я не мог включить его сюда. Вместо этого вы можете посмотреть его по ссылке pastebin.

Экземпляр размещён на виртуальной машине DigitalOcean с 2 ГБ оперативной памяти и 50 ГБ жёсткого диска. На этом экземпляре Discourse ничего особенного не настраивалось. Более того, на нём ещё никто не отправлял ни одного сообщения.

brotli -f --quality=6 /var/www/discourse/public/assets/locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js --output=/var/www/discourse/public/assets/locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js.br


Done compressing locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js : 0.11 secs

5746.556775825 Compressing: locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js > /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js --output=/var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js.br


Done compressing locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js : 0.11 secs

5746.662857966 Compressing: locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js > /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js --output=/var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js.br


Done compressing locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js : 0.1 secs

5746.764039922 Compressing: locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js > /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js --output=/var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js.br


Done compressing locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js : 0.14 secs

5746.902258561 Compressing: locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js > /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js --output=/var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js.br


Done compressing locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js : 0.11 secs

5747.007671073 Compressing: locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js > /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js --output=/var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js.br


Done compressing locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js : 0.15 secs

5747.159975235 Compressing: locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js > /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js --output=/var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js.br


Done compressing locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js : 0.12 secs

Skipping: plugins/discourse-local-dates-85c0a52c5a0ee4c69ce0a55fb5c6047c7fd2c12f0437b843240bb9ea3d4457b1.js already compressed
Skipping: plugins/discourse-narrative-bot-d88c63e1a6fadc2e6371b706e54750b554e3ee890061223c9af0f8feeb89915a.js already compressed
Skipping: plugins/discourse-presence-da4864123e624ace0b06153a5b9e6b600e5d5b6d6c28ada211bb7ec50894a66c.js already compressed
Skipping: plugins/poll-91a566fa78da0bffec70d7c8923ac79757032168b646e8c84d921d9810789bb1.js already compressed
Skipping: application-bd6ed652347208302845f7e2be3f2d2dbbbb72be7df2c0e46c18422a61188ff0.js already compressed
5747.281046973 Compressing: vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
uglifyjs '/var/www/discourse/public/assets/_vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' -m -c -o '/var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js.map'"
Parse error at _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
        return Handlebars.compile(...arguments);
                                  ^
ERROR: Unexpected token: punc «.»
    at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)
    at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:332:27)
    at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:275:9)
    at Object.<anonymous> (/usr/lib/node_modules/uglify-js/bin/uglifyjs:190:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
/var/www/discourse/lib/tasks/assets.rake:287:in `size'
/var/www/discourse/lib/tasks/assets.rake:287:in `block (4 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `block in concurrent?'
/var/www/discourse/lib/tasks/assets.rake:278:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:269:in `each'
/var/www/discourse/lib/tasks/assets.rake:269:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `concurrent?'
/var/www/discourse/lib/tasks/assets.rake:266:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:178:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:86:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
bin/rails:17:in `<main>'
Spinning up 3 Unicorn worker(s) that were stopped initially

Установлены ли у вас нестандартные плагины?

Вы выполняли

 ./launcher rebuild app

в командной строке?

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

Затем я перезапустил сервер, пересобрал приложение… и всё работает.

Привет, спасибо за быстрый ответ!
У меня чистая установка, я ничего не менял, кроме как время от времени нажимал кнопку «обновить». Вот почему то, что произошло с моим экземпляром Discourse, стало для меня большой неожиданностью.
Я не пробовал запускать ./launcher rebuild app, попробую и сообщу о результатах.

Мой переход на версию 2.7.0.Beta2 даже не начинается — я нажал на ссылку для обновления в один клик в письме с объявлением об этом обновлении.>

Отлично, доступна новая версия Discourse!

Ваша версия: 2.7.0.beta1
Новая версия: 2.7.0.beta2

Обновитесь с помощью нашего простого обновления в браузере в один клик

Узнайте, что нового, в примечаниях к выпуску или просмотрите полный список изменений на GitHub.

Посетите meta.discourse.org для новостей, обсуждений и поддержки Discourse

результат:

Почему это происходит? Мне следует выполнять обновление из консоли, подключившись к droplet на Digital Ocean, где размещён Discourse?

Вам потребуется выполнить обновление через командную строку. Появился новый базовый образ Docker.

./launcher rebuild app

Об этом сообщается в объявлении, но в стандартном письме об обновлении это не указано.

Я только что обновился до версии 2.7.0.Beta2. Это обновление необходимо выполнять через командную строку.

cd /var/discourse
git pull
./launcher rebuild app

Приношу извинения за это асинхронное обсуждение — я начал задавать вопрос, но мне пришлось внезапно покинуть офис. Чтобы не потерять незавершённое сообщение, я сохранил его — и это дало вам возможность ответить на мой вопрос ещё до того, как я его полностью опубликовал :wink:

Консоль DO заработает, если не использовать терминал.

Кнопки на скриншоте изначально отключены, что вынуждает вас сначала обновить Docker.

Кстати: вы могли бы оставить свой ответ, так как он автоматически сохраняется как черновик.

Сказал слишком рано

Спасибо, @geoff777 — теперь всё понятно

Пытаюсь запустить

cd /var/discourse
git pull
./launcher rebuild app

Скрипт rebuild app дважды подряд завершался с ошибкой в одном и том же месте:

Это не может быть случайным сетевым сбоем. Прошу совета.

В моём случае сборка застряла на плагине discourse-vk-auth. В настоящее время мой экземпляр работает без этого плагина.

gem install rrule -v 0.4.2 -i /var/www/discourse/plugins/discourse-calendar/gems/2.7.2 --no-document --ignore-dependencies --no-user-install
Successfully installed rrule-0.4.2
1 gem installed
gem install omniauth-vkontakte -v 1.6.1 -i /var/www/discourse/plugins/discourse-vk-auth/gems/2.7.2 --no-document --ignore-dependencies --no-user-install
Successfully installed omniauth-vkontakte-1.6.1
1 gem installed

I, [2021-01-22T17:13:51.391038 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate omniauth-vkontakte-1.6.1, because omniauth-oauth2-1.7.1 conflicts with omniauth-oauth2 (>= 1.5, <= 1.7.0)

Я тоже сталкивался с проблемами этого плагина vk в предыдущих версиях. Рекомендую удалить его, а также опубликовать лог ошибки в теме этого плагина на форуме, чтобы проблему можно было решить. :+1:

По скриншоту сложно сказать. У вас достаточно места на диске?

Вы отредактировали оба своих предыдущих сообщения после того, как я с ними взаимодействовал.

Во второй раз я поставил лайк позитивному сообщению, но вы его отредактировали, и теперь это пост о проблеме.
Который, видимо, мне нравится?

Приношу извинения, @geoff777. Не задумываясь, я изменил классификацию вашего комментария «лайк» (моя цель заключалась в том, чтобы держать количество моих постов небольшим, тем самым снижая вероятность недопонимания).


Я считаю, что у меня достаточно места:

 System information as of Fri Jan 22 20:56:56 UTC 2021

  System load:  0.02               Users logged in:          0
  Usage of /:   39.7% of 24.06GB   IPv4 address for docker0: 172.17.0.1
  Memory usage: 50%                IPv4 address for eth0:    xxx.xxx.xxx.xxx
  Swap usage:   1%                 IPv4 address for eth0:    
  Processes:    107                IPv4 address for eth1:    

Однако я подозреваю, что проблема связана с консолью Digital Ocean — она очень быстро истекает по времени, поэтому возможно, что моё обновление прошло успешно, и я просто об этом не знаю. Свяжусь со службой поддержки DO и сообщу о результатах здесь.

Спасибо.

Вы можете проверить на панели управления вашего форума, что обновление прошло успешно.
Надеюсь, всё сработало.

Ваше пожелание / надежда @geoff777 не помогли. Я попытался войти в систему — сервер Discourse не отвечал.

Я решил запустить discourse-doctor из консоли DO, запущенной через инструмент PuTTY (я работаю на машине с Windows 10), — и моя консоль остановилась в том же месте.

Обратите внимание на начало этого запуска: - app not running!

root@discourse-server:/var/discourse# ./discourse-doctor
DISCOURSE DOCTOR Fri Jan 22 22:14:45 UTC 2021
OS: Linux discourse-server 5.4.0-62-generic #70-Ubuntu SMP Tue Jan 12 12:45:47 U              TC 2021 x86_64 x86_64 x86_64 GNU/Linux


Found containers/app.yml

==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=forum.congral.tech
SMTP_ADDRESS=smtp.mailgun.org
DEVELOPER_EMAILS=admin@congral.com
SMTP_PASSWORD=3a22be2a4ba5ce9b0865199dc7083871-xxxxxx
SMTP_PORT=587
SMTP_USER_NAME=postmaster@forum.congral.tech
LETSENCRYPT_ACCOUNT_EMAIL=nikolaj.ivancic@congral.com

==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 20.10.2, build 2291f61

DOCKER PROCESSES (docker ps -a)

CONTAINER ID   IMAGE                              COMMAND                  CREAT              ED          STATUS                      PORTS     NAMES
4e0150995f6a   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   16 mi              nutes ago   Exited (1) 14 minutes ago             mystifying_fermat
271aff6b3bce   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   5 hou              rs ago      Exited (1) 5 hours ago                modest_brown
30ed32bab133   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   5 hou              rs ago      Exited (1) 5 hours ago                laughing_lalande
add2d921333a   local_discourse/app                "/sbin/boot"             2 wee              ks ago      Exited (5) 5 hours ago                app

==================== SERIOUS PROBLEM!!!! ====================
app not running!
Attempting to rebuild
==================== REBUILD LOG ====================
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 60 app
...

Вот полный лог до момента сбоя, сохранённый в моём репозитории на Github, чтобы сэкономить место здесь.

Тот факт, что я повторял это обновление несколько раз, и после каждой неудачи (сообщённой мне как «сетевая ошибка консоли»), очевидно, что это обновление уничтожает существующий экземпляр Discourse.

Пожалуйста, дайте совет. Я готов передать вам мои сертификаты, если вы захотите запустить это самостоятельно.

Оба раза у вас возникала фатальная ошибка PuTTY?

Кажется, это проблема самого PuTTY, хотя я не могу представить, почему.

Да, @pfaffman, я получаю ту же ошибку. Если выполнение ./discourse-doctor приводит к катастрофическому сбою, не может ли этот сбой вызвать фатальную ошибку PuTTY — по крайней мере, с моей точки зрения (удалённой) при наблюдении за его сбоем?

Это кажется маловероятным, но я создам тикет в службу поддержки DO, надеясь, что у них будет более полная картина этой проблемы.

Полагаю, я бы попробовал консоль Digital Ocean (на самом деле я бы использовал терминал в Ubuntu, но я бы не рекомендовал это вам).

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

  • сброс пароля root (через панель управления DO) позволил использовать консоль Digital Ocean (как предложил @pfaffman выше)
  • затем я запустил discourse-doctor в этой консоли, и он не обнаружил никаких проблем (до этого сброса пароля https://forum.congral.tech не отвечал — теперь всё работает отлично)
  • все мои попытки обновить Discourse (как вот эта) несколько раз провалились (в консоли PuTTY отображалась ошибка «Network Error»), и сегодня я могу подтвердить, что обновление не удалось:
content="Discourse 2.7.0.beta1 - https://github.com/discourse/discourse version 1cf92310456fb6e6424f6b532770461c56378d53"

Смена пароля root и последующее использование консоли Digital Ocean — это существенное изменение, которое может быть интересно команде Discourse для более глубокого понимания. Стоит ли мне продолжить расследование и делиться своими выводами здесь, @pfaffman?