반응 플러그인: 500 Internal Server Error

커뮤니티 여러분, 안녕하세요.

누군가가 자신의 프로필을 클릭한 후 활동 → 리액션을 클릭하면 HTTP 500 오류가 발생합니다:

Server error
while loading /discourse-reactions/posts/reactions.json
Error code: 500 Internal Server Error

저는 다음과 같은 플러그인을 사용하는 Discourse 표준 설치 환경(2.9.0.beta10/ c752d68737 )을 사용하고 있습니다:

버그인 것 같습니다.

재현이 안 되는데, /logs를 확인해서 오류에 대한 세부 정보를 여기에 올려 주시겠어요?

/logs에서 발견한 에러는 하나뿐입니다:

NoMethodError (undefined method title' for nil:NilClass) app/serializers/group_post_serializer.rb:21:in title’ (eval):7:in _fast_attributes' lib/freedom_patches/ams_include_without_root.rb:57:in i

app/serializers/group_post_serializer.rb:21:in `title'
(eval):7: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/associations.rb:200:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:53:in `as_json'
app/controllers/application_controller.rb:519:in `serialize_data'
app/controllers/application_controller.rb:530:in `render_serialized'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:54:in `reactions_given'
actionpack (7.0.3.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.3.1) lib/abstract_controller/base.rb:215:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/rendering.rb:53:in `process_action'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
i18n (1.12.0) lib/i18n.rb:322:in `with_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.3.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.3.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.3.1) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.3.1) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.3.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.3.1) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.3.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'


actionpack (7.0.3.1) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.3.1) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
railties (7.0.3.1) lib/rails/engine.rb:530:in `call'
railties (7.0.3.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.3.1) lib/rails/railtie.rb:226:in `method_missing'
actionpack (7.0.3.1) lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack (7.0.3.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.4) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.4) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.4) lib/rack/head.rb:12:in `call'
actionpack (7.0.3.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:368:in `call'
rack (2.2.4) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.4) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/cookies.rb:697:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.3.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster (2.11.3) lib/logster/middleware/reporter.rb:43:in `call'
railties (7.0.3.1) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.3.1) lib/rails/rack/logger.rb:27:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.4) lib/rack/method_override.rb:24:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.4) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiler.rb:393:in `call'


message_bus (4.2.0) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:202:in `call'
railties (7.0.3.1) lib/rails/engine.rb:530:in `call'
railties (7.0.3.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.3.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.4) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.4) lib/rack/urlmap.rb:58:in `each'
rack (2.2.4) 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/2.7.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `<main>'

나머지는 500 에러와 아무런 관련이 없는 경고들입니다. 어쨌든, 이를 가리키는 어떤 내용도 찾지 못했습니다.

안녕하세요,

이 문제를 재현할 수는 있지만, 정확한 원인은 아직 파악하지 못했습니다. 제 테스트 사이트에서는 일부 사용자에게는 정상적으로 작동하지만, 다른 사용자에게는 작동하지 않습니다.

콘솔 오류:

1개의 좋아요

네, 맞아요. 어떤 사용자에게는 작동하지만, 다른 사용자에게는 안 되는 경우가 있죠.

1개의 좋아요

아직까지 이 문제를 재현하지 못했습니다. 해당 사용자나 그들의 반응에 대해 특별한 점이 있나요? 아니면 조정되었을 수 있는 관련 관리자 설정이 있나요?

드디어 이 문제에 대한 재현 방법을 찾은 것 같습니다. 삭제된 주제(첫 번째 게시글)의 삭제되지 않은 게시글 중 하나에 반응이 있는 경우 발생하는 것 같습니다.

재현 방법:

  1. 첫 번째 게시글(OP)과 두 번째 게시글에 반응을 추가합니다.

  2. Test1 사용자의 activity/reactions 페이지를 확인하면 이제 예상대로 작동합니다.

  3. 두 번째 게시글은 삭제하지 않고, 주제 삭제 버튼으로 첫 번째 게시글(OP)만 삭제합니다.

  4. Test1 사용자의 activity/reactions 페이지를 다시 확인하면, 경로가 깨진 것 같아 500 에러가 발생합니다.

  5. 주제를 복구하거나 게시글도 함께 삭제하면 activity/reactions 페이지가 정상으로 돌아옵니다.


About the ... 카테고리 주제에 반응이 있는 경우, 카테고리가 삭제되어도 동일한 문제가 발생합니다. 실제 게시글은 삭제되지 않기 때문이라고 생각합니다.

  1. Test Subcategory 카테고리에서 Test1 사용자로 반응을 추가합니다.

  2. Test1 사용자의 activity/reactions 페이지를 확인하면 예상대로 작동합니다.

  3. Test Subcategory 카테고리를 삭제합니다.

  4. Test1 사용자의 activity/reactions 페이지를 다시 확인하면, 첫 번째 게시글(OP)에 남은 반응 때문에 경로가 깨져 500 에러가 발생합니다.

3개의 좋아요

리포트 감사합니다 :+1:

이 문제에 대한 수정안이 검토 중이며, 병합되면 알려드리겠습니다.

5개의 좋아요

이렇게 하면 해결될 거예요: FIX: deleted topic should exclude it from reactions given - Pull Request #191 - discourse/discourse-reactions - GitHub

결과를 알려주세요.

2개의 좋아요

이 주제는 마지막 답변 후 3일 자동으로 닫혔습니다. 새로운 답변은 더 이상 허용되지 않습니다.