@darkpixlz, вы можете подтвердить, какую версию Discourse вы используете: stable, beta или tests-passed?
Я работаю на бета-версии 2.9.0beta7. Я отстал на 2 коммита, ни один из которых не мог повлиять на эту проблему.
Список обновлений:
Discourse Akismet
Apple Auth
BBCode цвет
День рождения (Cakeday)
Календарь
Пользовательский мастер
Подписка
Математика
Microsoft Auth
Perspective API
ImgFlip
Prometheus
Вопросы и ответы (QA)
Реакции
Решено
Спойлер
Вход через Steam
Заметки о пользователе
Голосование
Кто онлайн
Ежегодный обзор
Диспетчер Docker
Руководство по стилям
Я только что отправил этот коммит в ядро:
Он добавляет новую задачу Rake, которая должна помочь нам найти причину этой проблемы. На нашем хостинге ошибок вообще не наблюдается, что говорит о том, что проблема связана с плагином стороннего разработчика.
Пожалуйста, кто из пользователей столкнулся с этой проблемой, обновитесь до последней версии с тестами passed, а затем выполните:
./launcher enter app
cd /var/www/discourse
bin/rake "revisions:debug_deserialization"
Это выведет информацию о проблемных классах и по одному примеру ревизии для каждого класса. Пожалуйста, поделитесь разделом summary/example из вывода в этой теме (или в личном сообщении, если вы не хотите публиковать пример ревизии открыто).
Как только мы точно узнаем, что вызывает проблему, это поможет нам создать исправление (скорее всего, это будет миграция базы данных в плагине стороннего разработчика или задача Rake в ядре, которая сможет очистить любые неожиданные данные).
Я попросил хостинг-провайдера запустить это, обновлю информацию здесь, как только получу результат.
Мы ждем, пока люди предоставят информацию о задаче rake, прежде чем продолжить работу здесь.
Сообщите нам.
Да, он так и не ответил мне, я просто напомнил ему.
Привет, ребята,
к сожалению, я зря потратил время в этой теме…
Я только что обновился до последней сборки, и проблема всё ещё сохраняется.
Я попытался выполнить это, но, полагаю, моя конфигурация не позволяет мне помочь здесь:
У меня всё работает в Docker / с PostgreSQL.
Есть ли что-то ещё, что я могу сделать, чтобы помочь вам с этим?
Вот мои используемые плагины:
Вам нужно настроить окружение… Попробуйте rake вместо bin/rake
Ах, если вы выполнили ./launcher enter app, это даст вам права root. Похоже, вам нужно переключиться на пользователя discourse, чтобы получить доступ к базе данных. Это должно помочь:
sudo -EH -u discourse bin/rake "revisions:debug_deserialization"
Нас интересует вывод следующего вида:
Проверка 5 записей PostRevision партиями по 1000... это может занять некоторое время...
Готово
---- Итоги ----
Проверено записей: 5
---- Примеры ----
(хотя, разумеется, если возникнут проблемы, раздел “Примеры” не будет пустым)
Вот наш вывод:
sudo -EH -u discourse bin/rake "revisions:debug_deserialization"
Проверка 1096 записей PostRevision партиями по 1000... это может занять некоторое время...
Готово
---- Итоги ----
Проверено записей: 1096
---- Примеры ----
Ого! Это неожиданно!
Вы всё ещё видите ошибки при попытке просмотреть некоторые правки постов?
Кстати, это «стандартная установка» или он размещён в кластере мультисайтов?
Да, это стандарт.
И уже не совсем, я давно не замечал таких проблем, думаю, это, возможно, уже решено.
Отлично, спасибо @darkpixlz
@B-iggy, если бы вы могли попробовать команду в этом сообщении, думаю, это должно исправить ошибку, которую вы увидели в первый раз ![]()
Спасибо большое, ребята!
На этот раз всё прошло успешно, вот вывод:
$w3dg @ 06:14:52 > /var/discourse: sudo ./launcher enter app
[sudo] пароль для w3dg:
WARNING: Docker версия 17.05.0-ce устарела, рекомендуется обновиться до 17.06.2 или новее.
Обнаружена архитектура x86_64.
WARNING: файл containers/app.yml доступен для чтения всеми. Вы можете защитить этот файл, выполнив: 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"
Проверка 18451 записей PostRevision партиями по 1000... это может занять некоторое время...
Готово
---- Итоги ----
Проверено записей: 18451
---- Примеры ----
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 (Попытка загрузить недопустимый класс: 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 (Попытка загрузить недопустимый класс: 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 и я провели расследование через личные сообщения и сумели найти причину проблемы. В обсуждаемой теме были прикреплены старые теги, но на сайте тегирование было отключено. Сочетание этих двух факторов привело к странному пограничному случаю в ядре, который вызывал ошибку. Эта конкретная проблема должна быть решена в:
Возможно, существуют и другие проблемы, поэтому я оставлю эту тему открытой ещё на пару недель. Пожалуйста, дайте знать, если вы всё ещё сталкиваетесь с проблемами при загрузке ревизий.




