Это обновление у меня не проходит, и прямо сейчас все три моих форума Discourse недоступны.
Консольное окно на экране обновления не заполняется ничем, но остальной интерфейс указывает на то, что обновление всё ещё идёт (хотя это уже длится гораздо дольше, чем любое другое обновление, которое я когда-либо делал).
У кого-нибудь ещё наблюдается такая проблема? Есть ли какие-то идеи, как завершить обновление успешно?
Ах, это проблема с ошибкой Ruby 3.0 и web-push-3.0.0?
Административный интерфейс обновления должен сообщать пользователю об этом, вместо того чтобы позволять ему нажать «Обновить всё» и получить полностью нерабочий форум. Это спасёт многих пользователей от приступа паники.
Не знаю; я лично никогда не использую графический интерфейс для обновлений, я всегда делаю это только через командную строку. Я не видел никаких ошибок, похожих на эту. Но, с другой стороны, я бы и не увидел.
В большинстве случаев, когда вы видите общее сообщение об ошибке, если конкретный сценарий был бы достаточно предсказан для создания специального сообщения об ошибке, такая ошибка была бы предотвращена.
Думаю, это хорошо, что проблема «помогите, обновление через GUI не удалось» настолько редка, что большинство людей не понимают, что первое, что нужно сделать, — это просто выполнить git pull; ./launcher rebuild app для стандартной развёртки. Это почти всегда правильный ответ в таких случаях.
Но это общее правило, если обновление через графический интерфейс не удалось.
Я использую Discourse уже много лет. Кажется, семь? В любом случае, раньше у меня никогда не было катастрофического сбоя при обновлении веб-версии. Конечно, сбои случались, но форум всегда оживал, так как происходил откат и запускался старый контейнер.
Это не общая ошибка, сообщение о Ruby довольно понятное.
web-push-3.0.0 требует версию Ruby >= 3.0, что несовместимо с
текущей версией 2.7.6
Docker Manager: FAILED TO UPGRADE
Если бы я платил за Discourse, я бы возмущался гораздо громче. Не потому, что какой-то огромный баг убил наш форум — баги случаются, — а потому, что проблема не была исправлена хотя бы за последние три дня. В данном случае это лишь небольшая волна эмоций в конце дня.
С точки зрения менеджера Docker, тот код, который был написан на момент запуска текущей версии, не знал о том, что в будущем возникнет эта проблема. Я понимаю ваше разочарование, но то, о чём вы просите, может не иметь технического смысла.
Если бы вы платили за Discourse, они бы управляли этим процессом, и вы бы этого даже не заметили.
Даже если технически невозможно исправить проблему, вы можете рассылать пользователям письма с предупреждением о необходимости обновления через CLI. Поднимите шум по этому поводу. Сломанные форумы без возможности отката — это плохо.
Мне казалось, что Discourse также продаёт поддержку для локального использования? В любом случае, я не могу жаловаться слишком громко, так как не являюсь платящим клиентом, но, черт возьми, три дня — это не очень хорошо.
Я рад за тебя, что это первый раз за семь лет, когда тебе пришлось прибегнуть к этому, но:
Я должен указать, что это искажение фактов. CDCK действительно рекомендуют делать резервные копии перед обновлениями как лучшую практику. Я не раз видел здесь, на meta, предупреждение о том, что если обновление через GUI не удаётся, следует вернуться к пересборке через командную строку, что является частью обычных ожиданий при администрировании собственного форума. Они не взломали форумы без возможности отката, так что твоё утверждение неверно.
Я не собираюсь спорить здесь часами. Мне просто кажется, что ты не совсем адекватно реагируешь на ситуацию.
Кроме того, обновление производственного сервера без предварительного тестирования в какой-либо staging-среде — это прямой путь к проблемам.
Не обязательно делать полную копию; для большинства случаев достаточно VPS за 5 долларов. Если вы хотите избежать простоев и необходимости обращаться к резервным копиям, это самая дешёвая страховка, которую вы можете приобрести.
Если вы спрашивали меня, то да, пересборка через CLI прошла успешно. Я вполне компетентный системный администратор и нашёл решение на этих форумах, но, похоже, другим владельцам форумов, вроде @pearsonified, это доставило серьёзные неудобства. 18 часов простоя — ой-ой.
Люди, говорящие о staging и production-окружениях, не в своём уме. Множество некорпоративных пользователей размещают форумы Discourse на небольших виртуальных машинах. Фраза «Вы должны тестировать в staging-окружении» — это оскорбительный, высокомерный ответ, который никоим образом не оправдывает поломку их установки. Ничто не оправдывает этого.
Я просто хочу подчеркнуть, что я ценю то, что это отличное программное обеспечение полностью бесплатно. Я благодарен за это, и occasionalные препятствия не меняют моего отношения.
Discourse бесплатен, но серверы, домены и наше время — нет.
Это не имеет никакого отношения к корпоративным средам; это просто здравый смысл, когда задействовано так много переменных. Много усилий прилагается для того, чтобы обновления проходили бесшовно. Если вы предпочитаете бесплатно тратить своё время на решение серьёзных сбоев — это ваше дело, но лично я предпочитаю знать, что некоммерческие и волонтёрские сообщества, которые я хосту, будут недоступны один раз для безболезненного обновления, а не в течение длительного периода.
Самый маленький VPS от DO будет достаточно для минимизации рисков при обновлении, если тест репрезентативен. Если вы компетентный системный администратор, то эти 5 долларов — цена чашки кофе и лишь малая часть вашей почасовой рыночной ставки.
Виртуальная машина для тестового окружения (stg) также должна была хранить данные форума, что удвоило бы наши расходы на хостинг. В любом случае это не было необходимо: это форум о видеоиграх, и небольшие простои (не 18 часов!) допустимы. В худшем случае у меня был снимок (snapshot) виртуальной машины до обновления, так что я мог бы просто откатить изменения.
Меня беспокоит, что всё это уже четыре дня не работает. Сбои при обновлении без возможности отката должны вызывать реакцию «черт возьми, это нужно исправить СЕЙЧАС». Это не должно быть спорным утверждением.
У меня тоже возникла ошибка web-push в Ruby. Обычный форум, без пользовательских плагинов.
web-push-3.0.0 требует версию Ruby >= 3.0, что несовместимо с текущей версией 2.7.6
Ранее уже случалось, когда сообщалось, что необходимо выполнить обновление через командную строку. Возможно, теперь можно включить эту опцию для версии, вызывающей эту проблему?
Редактирование: О, так и написано!
Проблема в том, что вы выполняете обновление через docker_manager, а затем просто переключаетесь на вкладку вверху, не обновляя страницу. Неужели нельзя изменить это так, чтобы обновление происходило через HTTP, а не просто переключение вкладок с помощью JS?