В разделе предстоящих событий отображается ошибка сервера 500

Если я нажимаю на «Ближайшие события» — полагаю, это обеспечивает плагин discourse-events, — получаю ошибку 500 сервера:

Started GET "/discourse-post-event/events.json" for 91.37.126.155 at 2022-03-15 19:02:36 +0000
Processing by DiscoursePostEvent::EventsController#index as JSON
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 500 Internal Server Error in 913ms (ActiveRecord: 0.0ms | Allocations: 82862)
NoMethodError (undefined method `>=' for nil:NilClass)
(eval):17:in `_fast_attributes'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:177:in `call'

Использую Discourse 2.7.12 вместе с discourse-calendar 0.2 и discourse-saml 0.1.

Кто-нибудь знает, как исправить эту проблему?

2 лайка

Вы можете воспроизвести это на нашем канале по умолчанию (tests-passed)?

1 лайк

Извините. К сожалению, я не могу воспроизвести эту проблему в другом релизе. Это производственная система, которая будет обновлена до версии 2.8.X «в ближайшее время» :slight_smile:

Возможно, кто-то другой сможет проверить/протестировать, возникает ли это и в текущей версии релиза. Или кто-то с большим опытом работы в коде сможет подтвердить, что такого происходить не должно.

Интересно то, что у некоторых пользовательских аккаунтов эта проблема возникает, а у других — нет. Не могу найти причину этого.

1 лайк

С моей стороны ошибка тоже возникает, и у меня версия 2.9.0Beta2.
При попытке посмотреть предстоящие события в /logs я вижу следующее:

NoMethodError (undefined method `>=' for nil:NilClass)
(eval):17:in `_fast_attributes'
app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
app/controllers/application_controller.rb:397:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:358:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'

После тестирования мне не удалось воспроизвести эту ошибку в текущей версии Discourse.

Discourse - 2.9.0.beta2
Discourse Calendar - v0.2
Microsoft Windows 10 Pro - Версия 10.0.18363 Сборка 18363
Google Chrome - Версия 99.0.4844.74

Переход по адресу [discourse.example.com]/upcoming-events, по-видимому, работает корректно и отображает календарь как положено.

2 лайка

Хм… хорошо.

Мне кажется, на моем экземпляре возникла проблема: календарь ищет пост, который по какой-то причине отсутствует.

Есть ли способ понять, что именно означает эта ошибка NoMethodError (undefined method `>=' for nil:NilClass)?

Как лучше всего отладить ситуацию дальше?

Попробуйте безопасный режим [ВашСайт]/safe-mode с отключёнными темами и неофициальными плагинами, чтобы понять, не является ли один из них причиной конфликта?

1 лайк

Я не знал о безопасном режиме, очень интересно.

К сожалению, у меня всё ещё появляется сообщение об ошибке :frowning:

Только что заметил, что у меня эта проблема не возникает в Chromium. Это может стать обходным путём для других.
Мой основной браузер — Firefox-esr (91.8.0esr), работающий на Debian 11.

Я работаю вместе с @sbernhard на том же экземпляре Discourse (2.7.12) — я модератор, а не разработчик или администратор. До сих пор ошибка «500 Internal Server Error» появлялась у аккаунтов с правами модерации. Обычные пользователи, по-видимому, не сталкиваются с этой ошибкой — они могут получить доступ к разделу «Ближайшие события» в тот же момент, когда аккаунты с правами модерации видят ошибку (по крайней мере, других сообщений об ошибках мы пока не получали).

Как модератор, я получаю эту ошибку в Firefox 100, Edge 101 и актуальной версии Chromium 101 на Windows 10 Pro, а также на Ubuntu с Firefox. При использовании стандартного аккаунта пользователя на тех же системах ошибка не возникает.

Вы нашли решение для этого, @Sticchio / @sbernhard?

У меня сейчас похожая проблема на одном из моих сайтов.

Нет, к сожалению, нет. Ошибка всё ещё возникает. Но мы всё ещё используем Discourse 2.8.10. Не знаю, была ли она исправлена в более поздней версии.

1 лайк

У меня всё ещё появляется эта ошибка

Я использую Discourse 3.2.0.beta1-dev и Chromium 116.

Может ли кто-нибудь ещё воспроизвести это?

Да.
Та же версия Discourse и Chromium. Та же проблема также наблюдается в Firefox 116.

1 лайк