예정된 이벤트에서 500 서버 오류가 발생합니다

“예정된 이벤트(Upcoming events)”를 클릭하면 — 아마도 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/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 `>=' for nil:NilClass)
가 실제로 무슨 의미인지 이해할 수 있는 방법이 있을까요?

여기서 디버깅을 시작하는 방법은 무엇일까요?

테마와 비공식 플러그인을 비활성화한 안전 모드 [YourSite]/safe-mode를 시도해 보시고, 그중 하나가 충돌을 일으키는지 확인해 볼 수 있습니다.

1개의 좋아요

안전 모드가 있다는 건 몰랐네요. 정말 흥미롭습니다.

불행히도 여전히 오류 메시지가 뜨네요 :frowning:

크롬에서 이 문제가 발생하지 않는다는 것을 방금 알게 되었습니다. 다른 분들을 위한 우회책이 될 수 있습니다.
제 주요 브라우저는 Debian 11에서 실행 중인 Firefox-esr(91.8.0esr)입니다.

@sbernhard와 같은 Discourse 인스턴스(2.7.12)에서 함께 작업하고 있습니다. 저는 개발자/관리자가 아니라 moderator(모더레이터)입니다. 지금까지 "500 Internal Server Error"는 moderator 권한이 있는 계정에서 발생했습니다. 일반 사용자는 이 오류가 발생하지 않는 것으로 보입니다. 같은 시점에 일반 사용자는 "Upcoming events"에 접근할 수 있지만, moderator 권한이 있는 계정에는 오류가 표시됩니다(아직 다른 오류 보고를 받지 못했습니다).

모더레이터로 Firefox 100, Edge 101, Windows 10 Pro의 최신 Chromium 101에서 오류가 발생하며, Ubuntu의 Firefox에서도 마찬가지입니다. 동일한 시스템에서 일반 사용자 계정으로 접속하면 오류가 발생하지 않습니다.

@Sticchio / @sbernhard 님, 이 문제에 대한 해결책을 찾으셨나요?

현재 제 사이트 중 하나에서 비슷한 문제를 겪고 있습니다.

아니요, 불행히도 아닙니다. 오류가 여전히 발생합니다. 하지만 우리는 아직 Discourse 2.8.10 버전을 사용하고 있습니다. 나중에 나온 버전에서 수정되었는지 알 수 없습니다.

1개의 좋아요

여전히 이 오류가 발생하고 있습니다

저는 Discourse 3.2.0.beta1-dev와 Chromium 116을 사용하고 있습니다.

다른 분들도 재현할 수 있나요?

네.
Discourse와 Chromium 버전이 동일합니다. Firefox 116에서도 동일한 문제가 발생합니다.

1개의 좋아요