今後のイベント表示でサーバーエラー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-calender 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/middleware/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 - Version 10.0.18363 Build 18363
Google Chrome - Version 99.0.4844.74

[discourse.example.com]/upcoming-events に移動すると、正しく機能し、意図したとおりにカレンダーが表示されるようです。

「いいね!」 2

うーん…わかりました。

私のインスタンスに問題があるように感じます。カレンダーが、何らかの理由で存在しない投稿を検索しているようです。

この NoMethodError (undefined method `\u003e=' for nil:NilClass) が実際何を意味するのかを理解する方法はありますか?

ここからデバッグするにはどうすればよいでしょうか?

テーマと非公式プラグインを無効にしたセーフモード [YourSite]/safe-mode を試して、それらが干渉しているかどうかを絞り込むことができますか?

「いいね!」 1

セーフモードのことは知りませんでした。非常に興味深いです。

残念ながら、まだエラーメッセージが表示されます :frowning:

Chromiumではこの問題が発生していないことに気づきました。他の人にとっては回避策になるかもしれません。
私のメインブラウザは、debian 11で動作しているFirefox-esr(91.8.0esr)です。

私は @sbernhard と同じディスコースインスタンス (2.7.12) で共同作業しています。モデレーターであり、開発者/管理者ではありません。これまでは、「500 Internal Server Error」がモデレーション権限を持つアカウントに表示されていました。通常のユーザーは、このエラーが発生しないようです。モデレーション権限を持つアカウントがエラーを表示されている同じ瞬間に、「Upcoming events」にアクセスできます(少なくとも、これまでのところ他のエラーレポートは受け取っていません)。

モデレーターとして、Windows 10 Pro の Firefox 100、Edge 101、および最新の Chromium 101 でエラーが発生しますが、Ubuntu の Firefox でも同様です。標準ユーザーアカウントでは、同じシステムでエラーは発生しません。

@Sticchio / @sbernhard はこの解決策を見つけましたか?

現在、私のサイトの1つで同様の問題が発生しています。

いいえ、残念ながらそうではありません。エラーはまだ発生しています。しかし、私たちはまだDiscourse 2.8.10を使用しています。後続のバージョンで修正されたかどうかはわかりません。

「いいね!」 1

このエラーがまだ発生しています

Discourse 3.2.0.beta1-dev と Chromium 116 を使用しています。

他に再現できる方はいらっしゃいますか?

はい。
Discourse と Chromium のバージョンは同じです。Firefox 116 でも同様の問題が発生しています。

「いいね!」 1