مشكلة في مراجعات المشاركات بعد التحديث إلى 2.8.6 مستقر أو 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)

هل هذا موقع عام؟ هل يمكنك مشاركة رابط للمنشورات المتأثرة؟ (عبر رسالة خاصة إذا كنت تفضل)

3 إعجابات

تم الإرسال عبر رسالة خاصة. يسعدني إرسالها للآخرين إذا لزم الأمر.

إعجابَين (2)

لقد ألقيت نظرة سريعة على الروابط التي شاركتها ويبدو أن المشاركات التي تفتقر إلى مراجعات التحرير هي نفسها التي تحتوي أيضًا على التواريخ في رأس الموضوع. هل لديك مكون سمة يضيف هذه؟

4 إعجابات

غير متأكد مما إذا كنت تقصد عنوان الموضوع أو شيئًا آخر. تتم إضافة عناوين الموضوع يدويًا على الرغم من مظهرها. ومع ذلك، نعم، يبدو أن كلا المنشورين اللذين بهما مشكلة يحدثان ضمن فئة رئيسية مشتركة وهي المكان الذي ينظم فيه الأشخاص الاجتماعات.

نحن نشغل المكون الإضافي paviliondev/discourse-events والموضوعات في هذه الفئة لها حدث مرتبط في المنشور الأول (وهو المكان الذي تحدث فيه هذه المشكلة). ومع ذلك، فإن استخدام الوضع الآمن لتعطيل المكون الإضافي لم يبدو أنه يعيد المراجعات للعمل مرة أخرى.

هل هناك أي شيء آخر يمكنني تجربته؟

3 إعجابات

أعتقد أن هذا يجب أن يكون متعلقًا بـ SECURITY: Bump Rails to 6.1.6.1 (stable) (#17470) · discourse/discourse@bb287c6 · GitHub. أنا أبحث في بعض مواقعنا الخاصة الآن ويبدو أن لدينا بعض سجلات الأخطاء المماثلة. سأقوم بإصلاحه والتحديث هنا عندما يتم إصلاحه :eyes:

6 إعجابات

يجب إصلاح هذا بواسطة FIX: Allow Time objects to be deserialized in PostRevision (#17501) · discourse/discourse@7d9b98a · GitHub

وعلى الفرع المستقر FIX: Allow Time objects to be deserialized in PostRevision (stable) (… · discourse/discourse@5d2ecce · GitHub

لتحديث تثبيت قياسي، قم بزيارة /admin/upgrade

7 إعجابات

ما زلت أواجه هذه المشكلة، بعد الترقية.


إنها تحدث بشكل متقطع أكثر، لكنها لا تزال تحدث بين الحين والآخر.

3 إعجابات

شكراً على العمل السريع على هذا. لكن أخشى أنه لم يحل المشكلة بالنسبة لنا. المنشوران اللذان ذكرتهما لا يزالان يتصرفان بنفس الطريقة، بدون إصدارات مرئية. جربت كل من /admin/upgrade وإعادة بنائه.

إعجابَين (2)

عذرًا على ذلك! لقد ساعد هذا الإصلاح في الأخطاء المماثلة التي كنا نراها على استضافتنا، لذلك يجب أن يكون هناك شيء إضافي يحدث في موقعك. على الأرجح يتعلق الأمر بالمكونات الإضافية/الاستيراد.

هل يمكنك زيارة /logs والبحث عن أي أخطاء مثل

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

إصدار “الوقت” هو الوحيد الذي كنا نراه، ويجب أن يكون قد تم حله الآن. ما هي أخطاء “الفئة غير المحددة” الأخرى التي تراها في سجلاتك؟

إعجاب واحد (1)

إذًا، ربما ليست نفس المشكلة إذن.

كل أخطاء Psych::DisallowedClass التي كنا نراها تتعلق بالفئة unspecified class: Symbol، وفقًا لتتبع المكدس الذي تم نشره سابقًا.

حاولت تعطيل الأحداث (من إضافة paviliondev/discourse-events) في تلك الفئة المحددة، لكن ذلك وحده لم يبدُ أنه أحدث فرقًا.

هل يعطي الخطأ أعلاه أي تلميح قبل أن أذهب في طريق محاولة تعطيل الإضافة على مستوى المنتدى بالكامل (والتي ستتطلب إعادة بناء)؟

إعجابَين (2)

للأسف، لا أعتقد أن تعطيل المكون الإضافي سيحدث أي فرق. البيانات الإشكالية مخزنة بالفعل في قاعدة البيانات، لذا فهي باقية. أعتقد أنه يمكننا إضافة Symbol بأمان إلى قائمة الفئات المسموح بها. سأفعل ذلك :eyes:

تعديل: للتوضيح، هذا ليس خطأ المكون الإضافي حقًا. في السابق، كان يُسمح بأي نوع بيانات لتخزينه في PostRevision. مشكلة أمان Rails تعني أنه كان علينا تغيير السلوك فجأة وتقييد أنواع البيانات المسموح بها.

3 إعجابات

هل يمكنك المحاولة مرة أخرى للتحديث @mentalstring - لقد دفعت للتو FIX: Allow Symbol objects to be deserialized in PostRevision (stable)… · discourse/discourse@f0ef186 · GitHub

3 إعجابات

لقد كان هذا هو السبب - إنه يعمل كما هو متوقع الآن! :+1:

شكراً لك على النظر في هذا الأمر بهذه السرعة.

3 إعجابات

مرحباً، هذا لا يزال لا يعمل بعد التحديث.

@darkpixlz هل يمكنك اتباع هذه الخطوات وإخبارنا بما تجده:


أنا أرى هذا فقط.

حسناً، يبدو أن لديك أخطاء في User و Group. هل يمكنك مشاركة قائمة الإضافات المثبتة على الموقع؟

إعجاب واحد (1)

الإضافات:
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
يمكنني الحصول على المكونات إذا أردت

إعجاب واحد (1)

أكا، لدينا تقريبًا كل المكونات الإضافية الوظيفية :rofl:

إعجاب واحد (1)