Например, на моём форуме я внезапно перестал(а) входить в аккаунт без каких-либо действий с моей стороны. Проблема не в том, что нельзя обновить Discourse, когда GitHub недоступен, а в том, что недоступность GitHub приводит к тому, что ваш форум перестаёт работать, поскольку Discourse пытается проверить наличие обновлений, которые вы могли бы выполнить.
Да, именно так.
Я думаю, что это было вызвано чрезмерным стремлением рассказать людям о новых функциях — причём в текущем сериализаторе пользователя — в сочетании с трёхлетней давности изменением, которое устранило использование обычных «поверхностных» клонов (shallow clones):
@Ed_S и @jeanas, вы оба админы на затронутых инстансах, верно? Это должно касаться только админов, пока GitHub недоступен.
Да, именно так. Я мог войти с другой учётной записью, но не с административной.
Круто, я объединил PR. Сообщите, когда он попадёт в канал релиза, который вы используете, а затем подождите пару дней, пока GitHub снова не отвалится, и напишите, как всё прошло.
Отлично, спасибо. Только для уточнения: я администратор, у меня есть два модератора, и один из них был затронут. Значит, либо это касается всего персонала, либо всех пользователей, вошедших в систему. Мне было нормально, что доступ был в режиме инкогнито. И в моём случае я иногда мог войти, но с большим задержкой — я не был полностью заблокирован.
Отлично, большое спасибо за быстрый фикс!
Похоже, я столкнулся с той же самой проблемой, что и автор темы.
Нагрузка на сервер постоянно росла. Сначала наблюдались странные перебои в производительности, а затем экран «Oops» стал постоянным. Это продолжалось последние 3–4 дня.
Теперь, когда сработало много ограничений частоты запросов Let’s Encrypt и сборка была пересобрана, я протестировал вход под пользователем без прав администратора — и мне удалось войти!
При этом администраторы по-прежнему не могут войти (и, вероятно, модераторы тоже), а поскольку это приложение пересобиралось много раз сегодня, это точно должна быть последняя версия.
Что я упускаю из виду?
Вы можете войти в систему как администратор?
Немного обратной связи — я, кажется, столкнулся с этой проблемой примерно с 19 сентября (изначально я ошибся в диагнозе, так как не знал об этой теме/отчёте).
Я не знаю, каков был статус GitHub за этот период, но, возможно, кто-то сможет это проверить, поскольку, судя по всему, проблема восходит к событиям с простоем/работой в августе.
После последней пересборки, выполненной вчера, существующие администраторы не могут войти в систему.
Это странное состояние: корабль без капитана, но с пассажирами и, возможно, без экипажа.
Пока я писал этот ответ, я подумал, что, возможно, если я создам нового администратора с помощью команды rake, это сработает. И угадывайте, что произошло — это сработало!
Так что сейчас происходит следующее: исторический администратор пытается войти в систему и каждый раз получает экран «Oops…», в то время как у нового пользователя-администратора нет никаких проблем с доступом.
Да. В моём случае проблема, похоже, решена.
Так, @Ed_S, ты в итоге снова вошёл, верно? Но, судя по всему, тебе пришлось подождать некоторое время, в то время как я до сих пор не могу получить доступ (пострадали исходные аккаунты администраторов). Меня интересует, может быть, проблема шире, чем «зависание git», с которой до сих пор справлялись коммитами. Есть ли у тебя или у кого-нибудь ещё советы или идеи по поводу диагностики, которую стоит запустить, чтобы выявить что-то более глубокое?
Заранее благодарю за любую помощь.
Да, мой форум пострадал из-за того, что системы GitHub были настроены слишком «защитно», и всё вернулось в норму спустя несколько часов, когда они выпустили какой-то фикс.
Возможно, они снова что-то сделали, что ломает форумы на Discourse. Это может зависеть от географического положения или от конкретного провайдера. Я использую Hetzner, в Хельсинки.
Хорошо, этот инстанс — виртуальный сервер (Droplet) на базе DigitalOcean в США. ![]()
Ладно, сегодня попробовал пересобрать систему, чтобы, может, это как-то повлияло, но ничего не изменилось.
Сейчас администраторы не могут войти в инстанс Discourse до пересборки, а после пересборки — могут.
Может, это только я так думаю, но предполагаемый баг, который затрагивает только администраторов и модераторов, должен хотя бы насторожить с точки зрения безопасности, верно?
Это очень точечное и коварное нарушение, не находишь?
- Пользователи остаются целы и невредимы, в то время как капитан и экипаж связаны в трюме, а корабль плывёт к горизонту.

Я прочитал эту тему и в общих чертах понимаю, что якобы зависимость от git не должна была вызвать это, но если бы ты был хитрой ролевой ИИ, разве это не идеальный способ взломать Discourse?
К тому же, в данном случае проблема всё ещё не решена. Я не понимаю почему.
Помимо моих размышлений, я проверил логи сразу после пересборки, чтобы увидеть, какие ошибки возникли, и ниже приведён один из выводов об ошибке. Я не знаю, является ли он релевантным, но публикую на всякий случай.
activesupport (8.1.4) lib/active_support/values/time_zone.rb:461:in 'Date._parse'
activesupport (8.1.4) lib/active_support/values/time_zone.rb:461:in 'ActiveSupport::TimeZone#parse'
app/serializers/current_user_serializer.rb:216:in 'CurrentUserSerializer#has_new_upcoming_changes'
(eval at active_model_serializers-0.8.4/lib/active_model/serializer.rb:467):81:in 'CurrentUserSerializer#_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in 'ActiveModel::Serializer#attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in 'ActiveModel::Serializer#_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in 'ActiveModel::Serializer#serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in 'ActiveModel::Serializer#as_json'
activesupport (8.1.4) lib/active_support/json/encoding.rb:53:in 'Oj::Rails::Encoder#encode'
activesupport (8.1.4) lib/active_support/json/encoding.rb:53:in 'ActiveSupport::JSON.encode'
activesupport (8.1.4) lib/active_support/core_ext/object/json.rb:42:in 'ActiveSupport::ToJsonWithActiveSupportEncoder#to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in 'ActiveModel::Serializer#to_json'
multi_json (1.21.1) lib/multi_json/adapters/oj.rb:67:in 'Oj.dump'
multi_json (1.21.1) lib/multi_json/adapters/oj.rb:67:in 'MultiJSON::Adapters::Oj#dump'
multi_json (1.21.1) lib/multi_json/adapter.rb:110:in 'MultiJSON::Adapter.dump'
multi_json (1.21.1) lib/multi_json.rb:215:in 'MultiJSON.generate'
multi_json (1.21.1) lib/multi_json/deprecated.rb:34:in 'Kernel#public_send'
multi_json (1.21.1) lib/multi_json/deprecated.rb:34:in 'block in MultiJSON.deprecate_alias'
multi_json (1.21.1) lib/multi_json.rb:298:in 'Kernel#public_send'
multi_json (1.21.1) lib/multi_json.rb:298:in 'block (2 levels) in <module:MultiJson>'
lib/application_layout_preloader.rb:81:in 'ApplicationLayoutPreloader#preload_current_user_data'
lib/application_layout_preloader.rb:32:in 'ApplicationLayoutPreloader#preloaded_data'
app/helpers/application_helper.rb:987:in 'ApplicationHelper#preloaded_json'
app/views/layouts/application.html.erb:111
actionview (8.1.4) lib/action_view/base.rb:281:in 'Kernel#public_send'
actionview (8.1.4) lib/action_view/base.rb:281:in 'ActionView::Base#_run'
actionview (8.1.4) lib/action_view/template.rb:284:in 'block in ActionView::Template#render'
activesupport (8.1.4) lib/active_support/notifications.rb:212:in 'ActiveSupport::Notifications.instrument'
actionview (8.1.4) lib/action_view/template.rb:590:in 'ActionView::Template#instrument_render_template'
actionview (8.1.4) lib/action_view/template.rb:272:in 'ActionView::Template#render'
rack-mini-profiler (5.0.0) lib/mini_profiler/profiling_methods.rb:90:in 'block in ActionView::Template#profile_method'
actionview (8.1.4) lib/action_view/renderer/template_renderer.rb:77:in 'block in ActionView::TemplateRenderer#render_with_layout'
activesupport (8.1.4) lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'
activesupport (8.1.4) lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
activesupport (8.1.4) lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'
actionview (8.1.4) lib/action_view/renderer/template_renderer.rb:75:in 'ActionView::TemplateRenderer#render_with_layout'
actionview (8.1.4) lib/action_view/renderer/template_renderer.rb:59:in 'ActionView::TemplateRenderer#render_template'
actionview (8.1.4) lib/action_view/renderer/template_renderer.rb:11:in 'ActionView::TemplateRenderer#render'
actionview (8.1.4) lib/action_view/renderer/renderer.rb:58:in 'ActionView::Renderer#render_template_to_object'
actionview (8.1.4) lib/action_view/renderer/renderer.rb:31:in 'ActionView::Renderer#render_to_object'
actionview (8.1.4) lib/action_view/rendering.rb:136:in 'block in ActionView::Rendering#_render_template'
actionview (8.1.4) lib/action_view/base.rb:308:in 'ActionView::Base#in_rendering_context'
actionview (8.1.4) lib/action_view/rendering.rb:135:in 'ActionView::Rendering#_render_template'
actionpack (8.1.4) lib/action_controller/metal/streaming.rb:179:in 'ActionController::Streaming#_render_template'
actionview (8.1.4) lib/action_view/rendering.rb:122:in 'ActionView::Rendering#render_to_body'
actionpack (8.1.4) lib/action_controller/metal/rendering.rb:192:in 'ActionController::Rendering#render_to_body'
actionpack (8.1.4) lib/action_controller/metal/renderers.rb:155:in 'ActionController::Renderers#render_to_body'
actionpack (8.1.4) lib/abstract_controller/rendering.rb:28:in 'AbstractController::Rendering#render'
actionpack (8.1.4) lib/action_controller/metal/rendering.rb:173:in 'ActionController::Rendering#render'
actionpack (8.1.4) lib/action_controller/metal/instrumentation.rb:31:in 'block (2 levels) in ActionController::Instrumentation#render'
activesupport (8.1.4) lib/active_support/benchmark.rb:17:in 'ActiveSupport::Benchmark.realtime'
actionpack (8.1.4) lib/action_controller/metal/instrumentation.rb:31:in 'block in ActionController::Instrumentation#render'
actionpack (8.1.4) lib/action_controller/metal/instrumentation.rb:100:in 'ActionController::Instrumentation#cleanup_view_runtime'
activerecord (8.1.4) lib/active_record/railties/controller_runtime.rb:48:in 'ActiveRecord::Railties::ControllerRuntime#cleanup_view_runtime'
actionpack (8.1.4) lib/action_controller/metal/instrumentation.rb:30:in 'ActionController::Instrumentation#render'
lib/topic_list_responder.rb:16:in 'block (2 levels) in TopicListResponder#respond_with_list'
actionpack (8.1.4) lib/action_controller/metal/mime_responds.rb:224:in 'ActionController::MimeResponds#respond_to'
lib/topic_list_responder.rb:7:in 'TopicListResponder#respond_with_list'
app/controllers/list_controller.rb:119:in 'block (2 levels) in <class:ListController>'
actionpack (8.1.4) lib/action_controller/metal/basic_implicit_render.rb:8:in 'ActionController::BasicImplicitRender#send_action'
actionpack (8.1.4) lib/abstract_controller/base.rb:221:in 'AbstractController::Base#process_action'
actionpack (8.1.4) lib/action_controller/metal/rendering.rb:199:in 'ActionController::Rendering#process_action'
actionpack (8.1.4) lib/abstract_controller/callbacks.rb:267:in 'block in AbstractController::Callbacks#process_action'
activesupport (8.1.4) lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'
app/controllers/application_controller.rb:458:in 'block in ApplicationController#with_resolved_locale'
i18n (1.14.8) lib/i18n.rb:354:in 'I18n::Base#with_locale'
app/controllers/application_controller.rb:458:in 'ApplicationController#with_resolved_locale'
activesupport (8.1.4) lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
app/controllers/application_controller.rb:1140:in 'ApplicationController#ensure_dont_cache_page'
activesupport (8.1.4) lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
activesupport (8.1.4) lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'
actionpack (8.1.4) lib/abstract_controller/callbacks.rb:266:in 'AbstractController::Callbacks#process_action'
actionpack (8.1.4) lib/action_controller/metal/rescue.rb:36:in 'ActionController::Rescue#process_action'
actionpack (8.1.4) lib/action_controller/metal/instrumentation.rb:76:in 'block in ActionController::Instrumentation#process_action'
activesupport (8.1.4) lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'
activesupport (8.1.4) lib/ac
Также могу сказать, что я нашёл похожие, если не идентичные, записи об ошибках в логах этого инстанса, как и в первом сообщении темы. Там было много этих выводов pitchforks, но они, похоже, больше не появляются, то есть исчезли после обновления сборки несколько дней назад, хотя ситуация остаётся прежней. ![]()
Я вернулся к своей теме для описания опыта с собственным инстансом, так как проблема так и не была решена, и в этом случае может существовать реальное отличие — https://meta.discourse.org/t/the-git-hang-and-the-admin-mod-user-accs-oops-error-page-error/