Problem mit Beitragsrevisionen nach Update auf 2.8.6 stabil oder 2.9.0.beta7

We are noticing some posts where the previous revisions are not showing:

(there’s no text at all and notice the NaN on a post with 3 versions)

On the console I’m seeing a 500 error on /posts/X/revisions/latest.json .

On /logs I’m seeing the error below. This is on 2.8.6. We only noticed this after updating yesterday from 2.8.4, but I can’t guarantee it is related as we noticed this only in a couple of posts. I have tried rebuilt the container, but made no difference.

Psych::DisallowedClass (Tried to load unspecified class: Symbol)
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:510:in `render_json_dump'
app/controllers/posts_controller.rb:425:in `latest_revision'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387: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:361: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:198:in `call'

Backtrace:

/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/class_loader.rb:39:in `block (2 levels) in <class:ClassLoader>'
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:32:in `symbolize'
/usr/local/lib/ruby/2.7.0/psych/class_loader.rb:82:in `symbolize'
/usr/local/lib/ruby/2.7.0/psych/scalar_scanner.rb:74:in `tokenize'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:60:in `deserialize'
/usr/local/lib/ruby/2.7.0/psych/visitors/to_ruby.rb:123:in `visit_Psych_Nodes_Scalar'
/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:339: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: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 (6.1.6.1) lib/active_record/coders/yaml_column.rb:50:in `yaml_load'
activerecord (6.1.6.1) lib/active_record/coders/yaml_column.rb:26:in `load'
activerecord (6.1.6.1) lib/active_record/type/serialized.rb:22:in `deserialize'
activemodel (6.1.6.1) lib/active_model/type/helpers/mutable.rb:8:in `cast'
activemodel (6.1.6.1) lib/active_model/attribute.rb:175:in `type_cast'
activemodel (6.1.6.1) lib/active_model/attribute.rb:43:in `value'
activemodel (6.1.6.1) lib/active_model/attribute_set.rb:42:in `fetch_value'
activerecord (6.1.6.1) lib/active_record/attribute_methods/read.rb:36:in `_read_attribute'
activemodel (6.1.6.1) lib/active_model/attribute_methods.rb:254: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 (6.1.6.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.1.6.1) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.1.6.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'
app/controllers/application_controller.rb:510:in `render_json_dump'
app/controllers/posts_controller.rb:425:in `latest_revision'
actionpack (6.1.6.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.6.1) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.6.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.6.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.6.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
i18n (1.8.11) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
activesupport (6.1.6.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.6.1) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.6.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.6.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.6.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.6.1) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.6.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.6.1) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.6.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.6.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.6.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.6.1) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.6.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'
actionpack (6.1.6.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.6.1) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.6.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.6.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.6.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.6.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.6.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.6.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
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.6.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:361: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.6.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.6.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.6.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.6.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.6.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.6.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.6.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call'
railties
2 „Gefällt mir“

Ist dies eine öffentliche Seite? Können Sie einen Link zu den betroffenen Beiträgen teilen? (Per PM ist in Ordnung, wenn Sie es vorziehen)

3 „Gefällt mir“

Per PN gesendet. Gerne sende ich es auch an andere, falls erforderlich.

2 „Gefällt mir“

Ich habe mir die von Ihnen geteilten Links kurz angesehen und es scheint, dass die Beiträge mit fehlenden Bearbeitungsrevisionen diejenigen sind, die auch die Daten in der Themaüberschrift haben. Haben Sie eine Themenkomponente, die diese hinzufügt?

4 „Gefällt mir“

Ich bin mir nicht sicher, ob Sie den Thema-Titel oder etwas anderes meinen. Die Thema-Titel werden trotz ihres Aussehens manuell hinzugefügt. Obwohl, ja, beide Beiträge mit dem Problem scheinen innerhalb einer gemeinsamen übergeordneten Kategorie aufzutreten, in der Leute Besprechungen organisieren.

Wir verwenden das Plugin paviliondev/discourse-events und Themen in dieser Kategorie haben eine zugehörige Veranstaltung im ersten Beitrag (wo dieses Problem auftritt). Die Verwendung des Safe-Mode, um das Plugin zu deaktivieren, schien die Überarbeitungen jedoch nicht wieder zum Laufen zu bringen.

Gibt es noch etwas, das ich versuchen könnte?

3 „Gefällt mir“

Ich glaube, das muss mit SECURITY: Bump Rails to 6.1.6.1 (stable) (#17470) · discourse/discourse@bb287c6 · GitHub zusammenhängen. Ich sehe mir gerade einige unserer eigenen Websites an und es scheint, als hätten wir ein paar ähnliche Fehlerprotokolle. Ich werde es beheben und hier Bescheid geben, wenn es behoben ist :eyes:

6 „Gefällt mir“

Dies sollte durch https://github.com/discourse/discourse/commit/7d9b98a1614c48905df129b8691a07a834fa12f7 behoben sein.

und auf dem stabilen Branch FIX: Allow Time objects to be deserialized in PostRevision (stable) (… · discourse/discourse@5d2ecce · GitHub

Um eine Standardinstallation zu aktualisieren, besuchen Sie /admin/upgrade.

7 „Gefällt mir“

Ich habe dieses Problem nach dem Upgrade immer noch.


Es tritt gelegentlich auf, aber es passiert immer noch ab und zu.

3 „Gefällt mir“

Vielen Dank für die schnelle Arbeit daran. Aber ich befürchte, es hat das Problem für uns nicht behoben. Die beiden von mir erwähnten Beiträge verhalten sich immer noch genauso, ohne sichtbare Versionen. Habe sowohl /admin/upgrade als auch den Neuaufbau ausprobiert.

2 „Gefällt mir“

Entschuldigung dafür! Diese Korrektur hat bei ähnlichen Fehlern geholfen, die wir auf unserem Hosting gesehen haben, daher muss es auf Ihrer Website noch etwas Zusätzliches geben. Höchstwahrscheinlich ist es mit Plugins/Importen verbunden.

Besuchen Sie bitte /logs und suchen Sie nach Fehlern wie

Psych::DisallowedClass (Tried to load unspecified class: Time)

Die Version “Time” ist die einzige, die wir gesehen haben und sollte nun behoben sein. Welche anderen Fehler mit “unspecified class” sehen Sie in Ihren Protokollen?

1 „Gefällt mir“

Ah, dann ist es vielleicht nicht dasselbe Problem.

Alle Psych::DisallowedClass-Fehler, die wir bisher gesehen haben, beziehen sich auf die Klasse unspecified class: Symbol, wie im zuvor geposteten Backtrace zu sehen ist.

Ich habe versucht, die Ereignisse (vom paviliondev/discourse-events Plugin) für diese spezielle Kategorie zu deaktivieren, aber das allein schien keinen Unterschied zu machen.

Gibt der obige Fehler einen Hinweis, bevor ich den Weg einschlage, das Plugin forumweit zu deaktivieren (was Rebuilds erfordert)?

2 „Gefällt mir“

Ich glaube leider nicht, dass das Deaktivieren des Plugins einen Unterschied machen wird. Die problematischen Daten sind bereits in der Datenbank gespeichert, also bleiben sie dort. Ich denke, wir können Symbol sicher zur Liste der erlaubten Klassen hinzufügen. Ich werde das tun :eyes:

Bearbeiten: Um es klarzustellen, das ist nicht wirklich die Schuld des Plugins. Zuvor durfte jeder Datentyp in der PostRevision gespeichert werden. Das Sicherheitsproblem von Rails hat dazu geführt, dass wir das Verhalten plötzlich ändern und die erlaubten Datentypen einschränken mussten.

3 „Gefällt mir“

Können Sie es bitte erneut versuchen, @mentalstring zu aktualisieren? Ich habe gerade FIX: Allow Symbol objects to be deserialized in PostRevision (stable)… · discourse/discourse@f0ef186 · GitHub gepusht

3 „Gefällt mir“

Das war’s – es funktioniert jetzt wie erwartet! :+1:

Vielen Dank, dass Sie sich so schnell darum gekümmert haben.

3 „Gefällt mir“

Hallo, das funktioniert nach dem Update immer noch nicht.

@darkpixlz bitte befolge diese Schritte und teile uns mit, was du findest:


Ich sehe nur diesen Kram.

Hmm ok, sieht so aus, als hätten Sie Fehler für User und Group. Können Sie eine Liste der auf der Website installierten Plugins teilen?

1 „Gefällt mir“

Plugins:
Discourse-Akismet
Discourse Apple Login
Discourse BCC
Discourse Cakeday
Discourse Calendar
Discourse Chat
Discourse Custom Wizard
Discourse follow
Discourse Gamification
Discourse Mate
Discourse Microsoft login
Discourse ImgFlip
Discourse Promethehus
Discourse Ratings
Discourse Solved
Discourse Spoiler
Discourse Steam Login
Discourse Tickets
Discourse Userr Network
Discourse User Notes
Discourse Voting
Discourse QA
Discourse Who’s online
Discourse Yearly Review
Discourse Manager
Styleguide
Ich kann Komponenten besorgen, wenn Sie möchten

1 „Gefällt mir“

Aka, wir haben so ziemlich jedes funktionierende Plugin :rofl:

1 „Gefällt mir“