Мой фронтенд экземпляра Discourse полностью пуст и не загружается после нового обновления. Это серьёзная проблема, и я немного напуган, так как пользователи недовольны. Бэкенд, кажется, работает.
Это произошло после сегодняшнего обновления на Digital Ocean Droplet, запущенном в контейнере. Я использовал launcher для пересборки приложения.
Любая помощь будет крайне оценена.
Ошибка в консоли:
app.js:31
Uncaught TypeError: Cannot read properties of undefined (reading 'registerAsyncHelper') at s.callback (vendor-suffix.js:58:1)
at s.exports (loader.js:106:1)
at s._reify (loader.js:143:1)
at s.reify (loader.js:130:1)
at s.exports (loader.js:104:1)
at s._reify (loader.js:143:1)
at s.reify (loader.js:130:1)
at s.exports (loader.js:104:1)
at s._reify (loader.js:143:1)
at s.reify (loader.js:130:1)
at s.exports (loader.js:104:1)
at requireModule (loader.js:27:1)
at n._prepareInitializer (app.js:24:1)
at app.js:81:1
at Array.forEach (<anonymous>)
at n.start (app.js:73:1)
at HTMLDocument.<anonymous> (start-app.js:4:1)
at discourse-boot.js:30:1
at discourse-boot.js:31:1
Эх… это был плагин. Не уверен, какой именно, но после некоторых поисков здесь я подозревал, что проблема могла быть в этом. Удалил cakeday, signatures, data explorer, discourse-video-upload и encryption. Позже буду добавлять их по одному и посмотрю, удастся ли выявить виновника. Но пока приложение снова работает, и я больше к нему не трогаю.
Ужасный опыт. Чувствую себя довольно виноватым… В будущем, наверное, стоит иметь процесс клонирования на тестовый сервер для таких обновлений. Урок усвоен. Или, по крайней мере, я всегда буду делать снимок состояния перед обновлением, чтобы в случае сбоя можно было восстановить систему.
Проблема в плагине Discourse encrypt. Вы можете исправить это, добавив его в конец вашего YAML-файла и выбрав коммит из времени до того, как он впервые сломался (проверка подписи перестала работать пару дней назад), вот так:
- git clone https://github.com/discourse/docker-manager.git
... затем ваши другие плагины ...
- git clone https://github.com/discourse/discourse-encrypt.git
- cd discourse-encrypt && git checkout 12639de
Как видите, я поставил плагин Discourse encrypt последним, на случай если команды cd и git checkout повлияли бы на последующие команды (хотя я не думаю, что это так).
Да, это хеш коммита последней версии, которая гарантированно работает корректно.
Мой сайт теперь снова работает нормально. И у Discourse Encrypt снова зелёные галочки.
@sam Завтра я подам заявку на позицию Full Stack Engineer. Решил, что, пока я занимаюсь исправлением сломанных плагинов, попробую присоединиться к команде и поработать над плагинами
Я бы просто написал вам в личные сообщения, но этот инстанс не позволяет этого сделать.
Пожалуйста, не оставляйте эту конфигурацию включённой надолго — ваш экземпляр не будет получать будущие обновления плагина Encrypt. Это с высокой вероятностью приведёт к сбоям в будущем.
Мы знаем о проблеме с проверкой подписи и уже работаем над исправлением и выпустили исправление.
Однако ошибка Ember.Test была неожиданной. @Mycobee, пожалуйста, подтвердите, какую версию Discourse вы используете? Как вы выполняли обновление? Через интерфейс /admin/upgrade?
Да, это крайне важно, и я забыл об этом упомянуть (я писал это почти в 4 часа утра по моему времени, только что восстановил работу системы и решил заглянуть сюда, чтобы проверить, столкнулся ли кто-то ещё с той же проблемой). Это лишь временное решение, чтобы снова запустить систему. Спасибо за напоминание, @david.
Это исправление не сработало для меня, когда я обновил всё сегодня в 00:00 UTC (десять с половиной часов назад). Я обновил свой экземпляр именно тогда, потому что увидел, что проблема с проверкой подписи была исправлена. После этого мне пришлось применить описанное выше временное решение. Возможно ли, что моё обычное обновление по какой-то причине не подтянуло последний код?
У вас всё ещё была проблема с проверкой подписи ? Или вы столкнулись с проблемой Ember.Test?
Кроме того, я только что связался с командой, и, похоже, мы выявили проблему с Ember.Test, и исправление будет очень скоро. Мы обновим информацию здесь, как только оно станет доступно.
У меня отображалась пустая главная страница, и мне пришлось отключить все плагины (в безопасном режиме), чтобы сайт вообще загрузился. Я обычно делаю еженедельные обновления примерно в 9:00 UTC по понедельникам, а это было дополнительное обновление для исправления проблемы с проверкой подписи. Однако… естественно, было зафиксировано и довольно много других изменений. Кроме того, в этот период версия также была повышена до 2.9.0beta3.
Как вы уже, вероятно, видели (но, возможно, кто-то ещё нет), вот дифф для Discourse Encrypt между версией, которая у меня сейчас запущена, и последней версией на момент написания этого сообщения.
Также это заняло не почти до 4 часов утра. Всё было исправлено незадолго до 2 часов ночи, но затем мне нужно было сообщить людям, что произошло (большинство наших пользователей находятся в США).
@david, я обновился до версии 2.9.0.beta3, что и вызвало проблему.
Что касается процесса обновления, я обычно делаю это через интерфейс /admin/upgrade. В данном случае всё было иначе.
Я обновил только docker-manager через интерфейс обновления. После этого мне пришлось заняться другими делами, и лишь через несколько часов я вернулся на путь /admin/upgrade, чтобы завершить процесс обновления.
Меня встретил текстовый экран с инструкцией перейти на хост, сменить директорию на /var/discourse, выполнить git pull и пересобрать приложение с помощью ./launcher… Так я и поступил, после чего началась полная неразбериха.
В состоянии сильного стресса и нервного напряжения я нашёл на этом форуме информацию о том, что не перехваченная ошибка TypeError может быть связана с плагином, поэтому я удалил из app.yml все ненужные плагины и пересобрал контейнер. После этого приложение Ember снова заработало.