@darkpixlz 현재 사용 중인 Discourse 버전이 무엇인지 확인해 주시겠어요? stable, beta, tests-passed 중 어느 것인가요?
업데이트 목록:
Discourse Akismet
Apple Auth
BBCode 색상
Cakeday
캘린더
Custom Wizard
Follow
Math
Microsoft Auth
Perspective API
ImgFlip
Prometheus
QA
Reactions
Solved
Spoilers
Steam 로그인
사용자 노트
투표
온라인 사용자
연간 리뷰
Docker 관리자
스타일 가이드
방금 이 커밋을 core에 push했습니다:
이 커밋은 이 문제를 추적하는 데 도움이 될 새로운 rake 작업을 도입합니다. 저희 호스팅 환경에서는 어떤 에러도 발생하지 않고 있으므로, 이는 서드파티 플러그인과 관련이 있을 가능성이 높습니다.
문제를 겪고 있는 분이 있다면 최신 tests-passed 버전으로 업데이트한 후 다음을 실행해 주세요:
./launcher enter app
cd /var/www/discourse
bin/rake "revisions:debug_deserialization"
이 작업은 문제의 클래스에 대한 정보와 각 클래스에 대한 예시 리비전을 출력합니다. 출력 결과의 요약/예시 섹션을 이 토픽에 공유해 주세요 (예시 리비전을 공개적으로 공유하고 싶지 않으시면 개인 메시지로 보내셔도 됩니다).
문제의 원인이 정확히 무엇인지 알게 되면 수정 작업을 진행하는 데 도움이 될 것입니다. (수정 방법은 서드파티 플러그인의 데이터베이스 마이그레이션이거나, 예상치 못한 데이터를 정리할 수 있는 core rake 작업이 될 가능성이 높습니다)
호스트에게 실행을 요청했고, 결과를 확인하면 여기에 업데이트하겠습니다.
rake 작업에서 보고된 정보를 확인한 후에 진행할 예정입니다.
확인 결과를 알려 주세요.
네, 그는 나에게 다시 연락하지 않았어요. 그저 그에게 상기시켜 주었죠.
여러분 안녕하세요,
불행히도 이 스레드에서 시간을 낭비했습니다…
그래서 최신 빌드로 업데이트했지만 여전히 문제가 발생합니다.
실행을 시도해 보았지만 제 환경 설정 때문에 여기서 도움을 드릴 수 없는 것 같습니다:
저는 docker / postgres 안에서 실행하고 있습니다.
이 문제를 해결하는 데 도움이 될 다른 조치가 있을까요?
제가 사용 중인 플러그인은 다음과 같습니다.
환경 변수를 설정해야 합니다 … bin/rake 대신 rake를 사용해 보세요
아, ./launcher enter app을 실행했다면 root 권한으로 로그인됩니다. 데이터베이스에 접근하려면 discourse 사용자로 전환해야 합니다. 다음 명령을 실행해 보세요:
sudo -EH -u discourse bin/rake "revisions:debug_deserialization"
우리가 확인하려는 출력 형식은 다음과 같습니다.
Checking 5 PostRevision records in batches of 1000... this may take some time...
Done
---- Summary ----
Checked records: 5
---- Examples ----
(물론, 문제가 있는 경우 “Examples” 섹션은 비어 있지 않을 것입니다)
다음은 우리의 출력입니다;
sudo -EH -u discourse bin/rake "revisions:debug_deserialization"
1000개씩 배치하여 1096개의 PostRevision 레코드를 확인 중... 시간이 다소 걸릴 수 있습니다...
완료
---- 요약 ----
확인된 레코드: 1096
---- 예시 ----
아! 예상치 못한 일이네요!
일부 게시물 수정 내역을 볼 때에도 여전히 오류가 표시되고 있나요?
참고로, 이건 ‘표준 설치’ 환경인가요, 아니면 멀티사이트 클러스터에 호스팅된 건가요?
네, 표준입니다.
그리고 더 이상 그런 건 아닌 것 같네요. 한동안 알아채지 못했는데, 이제 해결된 것 같습니다.
네, 좋습니다. @darkpixlz 감사합니다.
@B-iggy 이 게시물에 있는 명령어를 한번 시도해 볼 수 있을까요? 처음 보셨던 오류가 해결될 것 같습니다 ![]()
다들 감사합니다!
이번에는 성공적으로 실행되었고, 출력이 다음과 같습니다.
$w3dg @ 06:14:52 > /var/discourse: sudo ./launcher enter app
[sudo] password for w3dg:
WARNING: Docker version 17.05.0-ce deprecated, recommend upgrade to 17.06.2 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
root@W3DG-app:/var/www/discourse# cd /var/www/discourse
root@W3DG-app:/var/www/discourse# sudo -EH -u discourse bin/rake "revisions:debug_deserialization"
Checking 18451 PostRevision records in batches of 1000... this may take some time...
Done
---- Summary ----
Checked records: 18451
---- Examples ----
root@W3DG-app:/var/www/discourse#
하지만 안타깝게도 여기 있는 해당 토픽의 내 수정 이력은 여전히 비어 있습니다. 죄송합니다. 다른 로그를 제공할 수 있을까요?
참고로 제 discourse는 표준 설치 버전입니다.
@B-iggy 감사합니다. 정말 놀랍네요 - 스크립트가 오류 목록을 표시할 거라고 생각했어요. ![]()
자신의 사이트에서 /logs 경로를 방문해서 최근 오류 로그가 있는지 확인해 주시겠어요? 특히 Psych::DisallowedClass로 시작하는 로그를 찾고 있습니다.
네. Psych 오류가 여러 개 있습니다.
어떤 것이 필요하신가요? ![]()
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:97:in `find'
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:28:in `load'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:411:in `resolve_class'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:208:in `visit_Psych_Nodes_Mapping'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `block in register_empty'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `each'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `register_empty'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:141:in `visit_Psych_Nodes_Sequence'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `block in register_empty'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `each'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `register_empty'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:141:in `visit_Psych_Nodes_Sequence'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:340:in `block in revive_hash'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:338:in `each'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:338:in `each_slice'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:338:in `revive_hash'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:313:in `visit_Psych_Nodes_Document'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych.rb:360:in `safe_load'
activerecord (7.0.3.1) lib/active_record/coders/yaml_column.rb:50:in `yaml_load'
activerecord (7.0.3.1) lib/active_record/coders/yaml_column.rb:26:in `load'
activerecord (7.0.3.1) lib/active_record/type/serialized.rb:22:in `deserialize'
activemodel (7.0.3.1) lib/active_model/type/helpers/mutable.rb:8:in `cast'
activemodel (7.0.3.1) lib/active_model/attribute.rb:179:in `type_cast'
activemodel (7.0.3.1) lib/active_model/attribute.rb:43:in `value'
activemodel (7.0.3.1) lib/active_model/attribute_set.rb:46:in `fetch_value'
activerecord (7.0.3.1) lib/active_record/attribute_methods/read.rb:38:in `_read_attribute'
activemodel (7.0.3.1) lib/active_model/attribute_methods.rb:277:in `modifications'
app/serializers/post_revision_serializer.rb:233:in `block in all_revisions'
app/serializers/post_revision_serializer.rb:228:in `each'
app/serializers/post_revision_serializer.rb:228:in `all_revisions'
app/serializers/post_revision_serializer.rb:187:in `revisions'
app/serializers/post_revision_serializer.rb:254:in `previous'
app/serializers/post_revision_serializer.rb:50:in `previous_hidden'
(eval):5:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456: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.3.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.3.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.3.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:547:in `render_json_dump'
app/controllers/posts_controller.rb:428:in `latest_revision'
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:415:in `block in with_resolved_locale'
i18n (1.12.0) lib/i18n.rb:322:in `with_locale'
app/controllers/application_controller.rb:415: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:85: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'
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:366:in `call'
config/initializers/008-rack-cors.rb:25: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/reque
메시지 (33건 보고됨)
Psych::DisallowedClass (Tried to load unspecified class: Tag)
app/serializers/post_revision_serializer.rb:233:in `block in all_revisions'
app/serializers/post_revision_serializer.rb:228:in `each'
app/serializers/post_revision_serializer.rb:228:in `all_revisions'
app/serializers/post_revision_serializer.rb:187:in `revisions'
app/serializers/post_revision_serializer.rb:254:in `previous'
app/serializers/post_revision_serializer.rb:50:in `previous_hidden'
(eval):5:in `_fast_attributes'
app/controllers/application_controller.rb:547:in `render_json_dump'
app/controllers/posts_controller.rb:428:in `latest_revision'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
app/controllers/application_controller.rb:415: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:366:in `call'
config/initializers/008-rack-cors.rb:25: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:202:in `call'
스택 트레이스
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:97:in `find'
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:28:in `load'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:411:in `resolve_class'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:208:in `visit_Psych_Nodes_Mapping'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:16:in `visit'
/usr/local/lib/ruby/2.7.0/psych/visitors/visitor.rb:6:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:32:in `accept'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `block in register_empty'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `each'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:332:in `register_empty'
환경
HTTP HOSTS: forum.empyrion-homeworld.net
Psych::DisallowedClass (Tried to load unspecified class: Tag)
app/serializers/post_revision_serializer.rb:233:in `block in all_revisions'
app/serializers/post_revision_serializer.rb:228:in `each'
app/serializers/post_revision_serializer.rb:228:in `all_revisions'
app/serializers/post_revision_serializer.rb:187:in `revisions'
app/serializers/post_revision_serializer.rb:254:in `previous'
app/serializers/post_revision_serializer.rb:50:in `previous_hidden'
(eval):5:in `_fast_attributes'
app/controllers/application_controller.rb:547:in `render_json_dump'
app/controllers/posts_controller.rb:428:in `latest_revision'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
app/controllers/application_controller.rb:415: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:368:in `call'
config/initializers/008-rack-cors.rb:25: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:202:in `call'
감사합니다, 도움이 되네요! 이 명령어를 실행해 보고 출력을 붙여넣어 주시겠어요?
sudo -EH -u discourse bin/rails runner "puts PostRevisor.tracked_topic_fields.inspect"
이렇게 하면 PostRevisions에 데이터를 추가하는 플러그인을 파악하는 데 도움이 될 거예요. ![]()
제 로컬 사이트에서는 다음과 같이 반환됩니다.
{:title=>#<Proc:0x0000000124b02960 /Users/david/discourse/discourse/lib/post_revisor.rb:79>, :archetype=>#<Proc:0x0000000124b028c0 /Users/david/discourse/discourse/lib/post_revisor.rb:83>, :category_id=>#<Proc:0x0000000124b020a0 /Users/david/discourse/discourse/lib/post_revisor.rb:87>, :tags=>#<Proc:0x0000000124b01880 /Users/david/discourse/discourse/lib/post_revisor.rb:103>, :featured_link=>#<Proc:0x0000000124b017e0 /Users/david/discourse/discourse/lib/post_revisor.rb:129>}
정말 감사합니다!
제 출력 결과는 다음과 같습니다.
root@W3DG-app:/var/www/discourse# sudo -EH -u discourse bin/rails runner "puts PostRevisor.tracked_topic_fields.inspect"
{:title=>#<Proc:0x0000563008c879c0 /var/www/discourse/lib/post_revisor.rb:79>, :archetype=>#<Proc:0x0000563008c87920 /var/www/discourse/lib/post_revisor.rb:83>, :category_id=>#<Proc:0x0000563008c87010 /var/www/discourse/lib/post_revisor.rb:87>, :tags=>#<Proc:0x0000563008c867a0 /var/www/discourse/lib/post_revisor.rb:103>, :featured_link=>#<Proc:0x0000563008c86700 /var/www/discourse/lib/post_revisor.rb:129>}
@B-iggy와 저는 개인 메시지로 이 문제를 조사해 원인을 찾았습니다. 해당 주제에는 오래된 태그가 붙어 있었지만, 사이트에서는 태그 기능이 비활성화되어 있었습니다. 이 두 가지 요인이 결합되어 코어에서 이상한 엣지 조건을 유발했고, 이로 인해 오류가 발생했습니다. 해당 문제는 다음 커밋으로 해결되어야 합니다.
다른 문제가 여전히 있을 수 있으므로, 이 주제를 몇 주 더 열어둘 것입니다. 리비전 로딩 시 여전히 문제가 발생한다면 알려주세요.




