그룹 로딩 시 내부 서버 오류 발생

서버는 2.8.0.beta6 버전으로 실행 중입니다. 다른 모든 기능은 정상적으로 작동합니다. 그룹 목록도 표시되지만, 특정 그룹을 클릭하면 다음과 같은 오류가 발생합니다.

서버 오류

/groups/.json을(를) 불러오는 동안

오류 코드: 500 Internal Server Error

로그에는 report_js_error라고 나와 있습니다.

그룹 기능이 완전히 중단되어 매우 긴급한 상황입니다. 이 문제를 해결하는 방법에 대한 힌트가 있다면 알려주시면 감사하겠습니다. 미리 감사드립니다.

문제가 더욱 심각해졌습니다. 현재 어떤 주제도 읽을 수 없습니다. 다음 오류 메시지가 표시됩니다:
죄송합니다. 연결 문제로 인해 해당 주제를 불러오지 못했습니다. 다시 시도해 주세요. 문제가 지속되면 알려 주시기 바랍니다.

안전 모드를 시도해 보셨나요? 또한 로그를 확인하고 해당 로그를 공유해 주시는 것이 좋습니다.

저는 그 두 가지를 시도해도 개인적으로 도움을 드리기 어렵지만, 그 두 가지를 시도하지 않으면 도움을 줄 수 있는 사람도 큰 도움을 드리기 어렵습니다.

제가 직접 호스팅하는 인스턴스와 제가 관리하는 CDCK 호스팅 인스턴스 모두 최신 버전에서 그룹 JSON 파일을 정상적으로 로드합니다(방금 확인했습니다).

다음은 발견된 반복 오류 중 하나입니다:

Message (113 copies reported)

ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR:  column "for_topic" does not exist
LINE 1: SELECT "bookmarks"."id", "bookmarks"."post_id", "for_topic",...
                                                        ^
)
app/controllers/application_controller.rb:520:in `render_json_dump'
app/controllers/topics_controller.rb:1191:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1181:in `perform_show_response'
app/controllers/topics_controller.rb:162:in `show'
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: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:187:in `call'

Backtrace

rack-mini-profiler (2.3.3) lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler (2.3.3) lib/patches/db/pg.rb:69:in `exec_params'
activerecord (6.1.4.1) lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
activesupport (6.1.4.1) lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
activesupport (6.1.4.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (6.1.4.1) lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
activerecord (6.1.4.1) lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

Env

HTTP HOSTS: example.com

또 다른 오류는 다음과 같습니다:

rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:69:in `exec_params'
activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
activesupport-6.1.4.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
activesupport-6.1.4.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-6.1.4.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:670:in `exec_no_cache'
activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute_and_clear'
activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:53:in `exec_query'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/database_statements.rb:532:in `select'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/database_statements.rb:69:in `select_all'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/query_cache.rb:101:in `block in select_all'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/query_cache.rb:118:in `block in cache_sql'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/query_cache.rb:109:in `cache_sql'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/query_cache.rb:101:in `select_all'
activerecord-6.1.4.1/lib/active_record/querying.rb:47:in `find_by_sql'
activerecord-6.1.4.1/lib/active_record/relation.rb:843:in `block in exec_queries'
activerecord-6.1.4.1/lib/active_record/relation.rb:861:in `skip_query_cache_if_necessary'
activerecord-6.1.4.1/lib/active_record/relation.rb:828:in `exec_queries'
activerecord-6.1.4.1/lib/active_record/association_relation.rb:54:in `exec_queries'
activerecord-6.1.4.1/lib/active_record/relation.rb:631:in `load'
activerecord-6.1.4.1/lib/active_record/relation.rb:249:in `records'
activerecord-6.1.4.1/lib/active_record/relation/delegation.rb:88:in `as_json'
activesupport-6.1.4.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-6.1.4.1/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-6.1.4.1/lib/active_support/core_ext/object/json.rb:43: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'
/var/www/discourse/app/controllers/topics_controller.rb:1186:in `block (2 levels) in perform_show_response'
actionpack-6.1.4.1/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
/var/www/discourse/app/controllers/topics_controller.rb:1181:in `perform_show_response'
/var/www/discourse/app/controllers/topics_controller.rb:162:in `show'
actionpack-6.1.4.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.1.4.1/lib/abstract_controller/base.rb:228:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
i18n-1.8.10/lib/i18n.rb:314:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:397:in `with_resolved_locale'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
actionpack-6.1.4.1/lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord-6.1.4.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.1.4.1/lib/abstract_controller/base.rb:165:in `process'
actionview-6.1.4.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.3.3/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack-6.1.4.1/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.1.4.1/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:842:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.3/lib/rack/head.rb:12:in `call'
actionpack-6.1.4.1/lib/action_dispatch/http/permissions_policy.rb:22:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:353:in `call'
rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack-6.1.4.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.9.7/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.1.4.1/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.1.4.1/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:23:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.3/lib/rack/method_override.rb:24:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler-2.3.3/lib/mini_profiler/profiler.rb:249:in `call'
message_bus-3.3.6/lib/message_bus/rack/middleware.rb:61:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:187:in `call'
railties-6.1.4.1/lib/rails/engine.rb:539:in `call'
railties-6.1.4.1/lib/rails/railtie.rb:207:in `public_send'
railties-6.1.4.1/lib/rails/railtie.rb:207:in `method_missing'
rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.3/lib/rack/urlm


감사합니다. 세이프 모드에서 탐색해 보았지만 동일한 오류가 발생했습니다. 플러그인을 주석 처리한 후 컨테이너를 다시 빌드해야 할까요?

안전 모드에서 플러그인을 비활성화했는데도 문제가 계속된다면, 플러그인을 주석 처리할 필요는 없다고 생각합니다. 대신 업데이트와 재구성을 시도해 보면 해결될 수도 있습니다. :+1:

감사합니다.
주제를 게시하기 전에 launcher rebuild image-name을 실행했습니다. 하지만 그 후에도 여전히 오류가 발생합니다.

그것은 ./launcher rebuild app과 같은 일을 수행하나요?

그렇다고 생각합니다. 'app’이라는 이름의 컨테이너를 생성해야 합니다.

아, 그렇군요. 저는 기본적인 ‘끄고 다시 켜기’ 절차만 알고 있습니다 -

  • 안전 모드에서 확인
  • 최신 버전으로 업그레이드
  • 앱 재빌드

설치 환경에서 다른 분에게 문제의 단서를 줄 수 있는 특별한 부분이 있을까요?

다음 파일이 누락된 것으로 보입니다.

해당 파일은 이 커밋에서 추가되었습니다.

저장해 주셔서 감사합니다. 이 버전으로 문제를 해결했습니다. 최신 버전(aba08d1929)으로 업그레이드한 후 문제가 사라졌습니다. 하지만 최신 릴리스(2.8.0.beta6)로는 문제가 해결되지 않았습니다.

2.8.0.beta6을 실행 중인 다른 Discourse 인스턴스에서는 왜 이런 문제가 발생하지 않았는지 궁금합니다.