Возможно, это связано с моим блокировщиком рекламы?
После обновления, просмотрев консоль браузера, я увидел две записи:
/message-bus/fc3f44b30aea4975be751a4cc8736f76/poll:1 Не удалось загрузить ресурс: net::ERR_HTTP2_PROTOCOL_ERROR
docker/upgrade:1 Не удалось загрузить ресурс: сервер ответил со статусом 504 ()
Я вижу то же самое. Действительно, что бы ни отображалась кнопка «Начать обновление» после начала процесса — я полагаю, раньше она менялась на какую-то кнопку «Отмена» — я заметил, что она довольно быстро вернулась к надписи «Начать обновление», хотя обновление ещё шло, и оставалась такой даже после успешного завершения обновления. Я использую Chrome версии 86.0.4240.80 (официальная сборка) (x86_64) на Mac.
Я сталкивался с этим при предыдущем обновлении. Текущее обновление — с версии 2.6.0.beta3 до 2.6.0.beta4. Мне кажется, что в предыдущем обновлении требовалась пересборка приложения.
Редактирование: на другом форуме я только что увидел то же самое и сделал несколько скриншотов. Кнопка переключилась обратно, пока в логе всё ещё отображалось одно из множества сообщений «Ожидание перезагрузки Unicorn» в начале процесса. (Я предполагаю, что переключение основано на истечении времени, а не на прогрессе обновления. Редактирование: 60 секунд от нажатия кнопки до возврата к исходному состоянию. А прогресс-бар впервые сдвинулся примерно через 90 секунд.) См. ниже:
Перезагрузка машины (возможно, просто контейнера Docker) или перезапуск Redis, думаю, это исправит проблему. У нас нет четких шагов для воспроизведения, но я тоже это наблюдал, так что это точно происходит.
Это в основном косметическая проблема, поэтому не является приоритетом. Если бы у нас были четкие и последовательные шаги для воспроизведения…
Мне удалось воспроизвести эту проблему. Код клиента не претерпел значимых изменений. Похоже, что проблема заключается в том, что вызов /admin/docker/upgrade теперь возвращает ошибку 504 (Gateway Timeout).
Наш обработчик ошибок затем instructs его пометить своё состояние как «не обновляется», что означает, что когда приходит уведомление от шина сообщений о завершении, оно не помечается как завершенное.
Мне кажется, что корневая причина здесь — тайм-аут 504, который мы раньше не наблюдали. Я подозреваю, что это связано с каким-то изменением в прокси или Rails. Возможно, что-то в нашем Docker-образе? @sam, вам известно что-то об этом, или вы можете передать задачу в отдел DevOps?
Я вижу, что на клиенте происходит что-то странное, что приводит к некоторым неожиданностям:
Почему мы вообще делаем HTTP-запросы к серверу во время обновления? Похоже, что в середине процесса обновления мы делаем запрос к /admin/docker/upgrade, что меня сбивает с толку. Мы должны просто ждать сообщения от шлюза сообщений (message bus). Я запускал это в Firefox, поэтому возможности отладки ограничены.
Messagebus не использует long polling, а только short polling, что приводит к достижению лимитов запросов.
Кнопка «Перейти к следующему обновлению» немного запутывает. Когда завершено обновление одного компонента, лучше писать «Готово», а не сразу переключать вас на другой компонент.
@Osama, не мог бы ты уделить время отладке, доработке и обновлению Ember и так далее? Мне кажется, что основная часть работы здесь — это клиентская сторона.
Для всех, кто участвует в обсуждении этой темы: мы разберёмся с этим, но, вероятно, это займёт 2–4 недели. Поскольку проблема длится уже месяц, я думаю, мы можем немного подождать.
Я такого никогда не видел — это часть «Обновить всё»?
Для меня это вполне приемлемо. Мне казалось, я видел, как кто-то сказал, что случайно нажал «Начать обновление», когда оно снова появилось — надеюсь, это безопасно. Я никогда не использовал «Сбросить обновление», но, вероятно, это функция безопасности на случай, если обновление зависнет.