앱 재설치 후 500 오류로 로그인 불가

다음과 같이 표시됩니다:

오ops

이 토론 포럼을 구동하는 소프트웨어에서 예상치 못한 문제가 발생했습니다. 불편을 드려 죄송합니다.

오류에 대한 상세 정보가 로그에 기록되었으며, 자동 알림이 생성되었습니다. 확인하겠습니다.

추가 조치는 필요하지 않습니다. 다만 오류 상태가 지속될 경우, 오류 재현 단계를 포함한 추가 세부 정보를 사이트의 피드백 카테고리에 토론 주제를 게시하여 제공할 수 있습니다.

로그:

info

NoMethodError (undefined method `keys' for nil:NilClass)
(eval):76:in `_fast_attributes'
app/controllers/application_controller.rb:650:in `preload_current_user_data'
app/controllers/application_controller.rb:445:in `preload_json'
app/controllers/application_controller.rb:421:in `block in with_resolved_locale'
app/controllers/application_controller.rb:421:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

backtrace

plugins/chat/lib/chat/channel_fetcher.rb:164:in `preload_custom_fields_for'
plugins/chat/lib/chat/channel_fetcher.rb:159:in `secured_public_channels'
plugins/chat/lib/chat/channel_fetcher.rb:9:in `structured'
plugins/chat/plugin.rb:239:in `block (2 levels) in activate!'
(eval):76:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
activesupport (7.0.5.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.5.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.5.1) lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in `to_json'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapter.rb:25:in `dump'
multi_json (1.15.0) lib/multi_json.rb:139:in `dump'
app/controllers/application_controller.rb:650:in `preload_current_user_data'
app/controllers/application_controller.rb:445:in `preload_json'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.5.1) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:595:in `invoke_before'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:116:in `block in run_callbacks'
app/controllers/application_controller.rb:421:in `block in with_resolved_locale'
i18n (1.14.1) lib/i18n.rb:322:in `with_locale'
app/controllers/application_controller.rb:421:in `with_resolved_locale'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.5.1) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.5.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.5.1) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.5.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.5.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.5.1) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.5.1) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.5.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.5.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.5.1) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.5.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (3.1.0) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method' 
actionpack (7.0.5.1) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.5.1) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.5.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.5.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.5.1) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (7.0.5.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.5.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.5.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.5.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.5.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
rack (2.2.8) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.8) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.8) lib/rack/head.rb:12:in `call'
actionpack (7.0.5.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
rack (2.2.8) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.8) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.5.1) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.5.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster (2.12.2) lib/logster/middleware/reporter.rb:43:in `call'
railties (7.0.5.1) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.5.1) lib/rails/rack/logger.rb:27:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.8) lib/rack/method_override.rb:24:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.8) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.5.1) lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler (3.1.0) lib/mini_profiler.rb:260:in `call'
message_bus (4.3.7) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:228:in `call'
railties (7.0.5.1) lib/rails/engine.rb:530:in `call'
railties (7.0.5.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.5.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.8) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.8) lib/rack/urlmap.rb:58:in `each'
rack (2.2.8) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

env

hostname	iosre-app
process_id	226
application_version	497d5b4ca04794612509e43674aeba8aabb669e3
HTTP_HOST	iosre.com
REQUEST_URI	/
REQUEST_METHOD	GET
HTTP_USER_AGENT	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
HTTP_ACCEPT	text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
HTTP_REFERER	https://iosre.com/
HTTP_X_FORWARDED_FOR	115.171.177.163, 192.168.0.1
HTTP_X_REAL_IP	192.168.0.1
username	snakeninny
time	11:09 pm

어떤 아이디어가 있으신가요? 감사합니다!

안전 모드에서도 동일한 문제가 발생합니다

플러그인 페이지에서 디스코스 채팅을 비활성화하면 사라지나요?

어떤 플러그인이 설치되어 있나요?

로그인조차 할 수 없습니다… 플러그인 페이지에 진입할 수 없습니다.
app.yml에 설치된 플러그인 목록:

- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-reactions.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/discourse/discourse-akismet.git
- git clone https://github.com/discourse/discourse-feature-voting
- git clone https://github.com/discourse/discourse-data-explorer.git
- git clone https://github.com/discourse/discourse-apple-auth.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/discourse/discourse-cakeday.git
- git clone https://github.com/discourse/discourse-bcc.git
- git clone https://github.com/paviliondev/discourse-landing-pages.git

/var/www/discourse/plugins 디렉터리의 플러그인 목록:

root@iosre-app:/var/www/discourse/plugins# ls -al
total 96
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:02 .
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 ..
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 chat
drwxr-xr-x 12 discourse root      4096 Jan  7 03:07 discourse-akismet
drwxr-xr-x  7 discourse root      4096 Jan  7 03:07 discourse-apple-auth
drwxr-xr-x  9 discourse root      4096 Jan  7 03:07 discourse-bcc
drwxr-xr-x  9 discourse root      4096 Jan  7 03:07 discourse-cakeday
drwxr-xr-x 11 discourse root      4096 Jan  7 03:07 discourse-data-explorer
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 discourse-details
drwxr-xr-x 11 discourse root      4096 Jan  7 03:07 discourse-feature-voting
drwxr-xr-x 12 discourse root      4096 Jan  7 03:07 discourse-follow
drwxr-xr-x 13 discourse root      4096 Jan  7 03:02 discourse-landing-pages
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 discourse-lazy-videos
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 discourse-local-dates
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 discourse-narrative-bot
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 discourse-presence
drwxr-xr-x 11 discourse root      4096 Jan  7 03:07 discourse-reactions
drwxr-xr-x 10 discourse root      4096 Jan  7 03:07 discourse-solved
drwxr-xr-x  8 discourse root      4096 Jan  7 03:07 discourse-spoiler-alert
drwxr-xr-x 12 discourse root      4096 Jan  7 03:02 docker_manager
drwxr-xr-x  2 discourse root      4096 Jan  7 03:02 plugins
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 poll
drwxr-xr-x  1 discourse discourse 4096 Jan  7 03:01 styleguide

파빌리온 플러그인 없이 다시 빌드해 보세요

paviliondev 없이:

- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-reactions.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/discourse/discourse-akismet.git
- git clone https://github.com/discourse/discourse-feature-voting
- git clone https://github.com/discourse/discourse-data-explorer.git
- git clone https://github.com/discourse/discourse-apple-auth.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/discourse/discourse-cakeday.git
- git clone https://github.com/discourse/discourse-bcc.git
# - git clone https://github.com/paviliondev/discourse-landing-pages.git

재구축 후에도 500 오류가 계속 발생합니다.
이번에는 안전 모드(safe mode)가 문제를 해결해주지 않은 것이 이상합니다. backtrace에서 chat을 발견했는데, chat 플러그인의 버그일 수 있을까요? 테스트를 위해 chat 플러그인을 일시적으로 비활성화하는 방법은 무엇인가요?

이번에는 대부분의 플러그인 없이 앱을 다시 빌드했습니다:

- git clone https://github.com/discourse/docker_manager.git
# - git clone https://github.com/discourse/discourse-solved.git
# - git clone https://github.com/discourse/discourse-reactions.git
# - git clone https://github.com/discourse/discourse-spoiler-alert.git
# - git clone https://github.com/discourse/discourse-akismet.git
# - git clone https://github.com/discourse/discourse-feature-voting
# - git clone https://github.com/discourse/discourse-data-explorer.git
# - git clone https://github.com/discourse/discourse-apple-auth.git
# - git clone https://github.com/discourse/discourse-follow.git
# - git clone https://github.com/discourse/discourse-cakeday.git
# - git clone https://github.com/discourse/discourse-bcc.git
# - git clone https://github.com/paviliondev/discourse-landing-pages.git

여전히 동일합니다

이건 뭔가 채팅 관련인 것 같은데 … 아래를 시도해 보세요

./mothership enter ...
rails c
SiteSetting.chat_enabled = false
1개의 좋아요

감사합니다! chat이네요…

(base) root@iosre:/var/discourse# ./launcher enter app
x86_64 아키텍처가 감지되었습니다.
root@iosre-app:/var/www/discourse# rails c
플러그인 이름은 'discourse-topic-voting'이지만, 플러그인 디렉터리 이름은 'discourse-feature-voting'입니다.
[1] pry(main)> SiteSetting.chat_enabled = false
=> false

이후로 500 오류가 발생하지 않고, 페이지에 진입할 수 있습니다.

채팅에서 어떤 일이 일어나서 이 오류가 발생했는지 파악해야 합니다. 채널 설정과 관련된 문제가 있는 것 같습니다.

최소한 channel_fetcher에 보호 장치를 추가하여 이런 방식으로 크래시가 일어나지 않도록 할 수 있습니다.

1개의 좋아요

감사합니다! 도움이 필요하신 부분이 있으신가요?

아직 없습니다. 채팅 팀이 이번 주에 확인해 보고 알려드리겠습니다!

4개의 좋아요

안정판에서도 같은 문제가 발생합니다.

아마도 이 커밋에서 수정되었을 것 같습니다: FIX: Preload the right fields on categories (#24396) · discourse/discourse@0bc568f · GitHub

@snakeninny 님은 어떤 버전을 사용 중이신가요?

1개의 좋아요

아, 감사합니다. 카테고리 작업과 관련이 있다는 의심은 하고 있었지만 입증할 수는 없었거든요. 에러가 카테고리 사전 로딩에서 완전히 발생하고 있으니, 그럴 만도 하겠네요.

하지만 OP의 말씀에 따르면:

그러면 아마도 수정 이후에 발생한 것 같습니다 :confused:

1개의 좋아요

아, 그 부분을 놓쳤군요.

하지만 그 커밋은 수정 사항보다 먼저입니다. 날짜는 11월 9일이고, 수정은 11월 15일에 이루어졌거든요.

네, 맞아요. 링크를 잘못 연결한 것 같네요. 그래서 99%는 그 문제일 겁니다.

@snakeninny 업데이트를 시도해 보세요.

감사합니다 @RGJ :chefs_kiss:

4개의 좋아요

:warning: 이 문제는 포럼을 3.1.3에서 3.1.4로 업데이트할 때 발생합니다.
원인을 조사하고 있으며, 추가 정보가 확보되는 대로 즉시 알려드리겠습니다.

5개의 좋아요

네, 문제는 위에서 언급한 수정 사항이 stable 버전으로 백포트되지 않았는데, 현재 stable 버전이 이 수정 사항에 의존하고 있다는 점입니다.

@j.jaffeux @daniel 이 수정 사항을 긴급히 stable 버전으로 백포트해 주시겠습니까? 현재 채팅이 활성화된 상태에서는 로그인한 모든 사용자에게 stable 버전이 완전히 작동하지 않습니다.

2개의 좋아요

네, 부탁드려요. 저도 같은 오류가 발생해서 사이트가 충돌했어요. 아직 커뮤니티의 답변을 기다리고 있습니다.